001/*-
002 * #%L
003 * Smile CDR - CDR
004 * %%
005 * Copyright (C) 2016 - 2026 Smile CDR, Inc.
006 * %%
007 * All rights reserved.
008 * #L%
009 */
010package ca.cdr.api.model.json.portal;
011
012import ca.cdr.api.model.json.AbstractModelJson;
013import com.fasterxml.jackson.annotation.JsonCreator;
014import com.fasterxml.jackson.annotation.JsonProperty;
015import io.swagger.v3.oas.annotations.media.Schema;
016import jakarta.annotation.Nonnull;
017
018import java.util.List;
019import java.util.Objects;
020
021public class PortalAppsJson extends AbstractModelJson {
022        @Schema(description = "configuration for custom external applications accessible in Smile portal")
023        public final List<ExternalAppJson> externalApps;
024
025        @Schema(description = "configuration for customer-supplied web-jar applications hosted in Smile portal")
026        public final List<InternalAppJson> internalApps;
027
028        @Schema(description = "configuration for bundled applications accessible in Smile portal")
029        public final List<BundledAppJson> bundledApps;
030
031        @Schema(description = "configuration for Smile module endpoints that will be accessible in Smile portal")
032        public final List<CdrModuleAppJson> cdrModuleApps;
033
034        @JsonCreator
035        public PortalAppsJson(
036                        @Nonnull @JsonProperty(value = "externalApps", required = true) List<ExternalAppJson> theExternalApps,
037                        @Nonnull @JsonProperty(value = "internalApps", required = true) List<InternalAppJson> theInternalApps,
038                        @Nonnull @JsonProperty(value = "bundledApps", required = true) List<BundledAppJson> theBundledApps,
039                        @Nonnull @JsonProperty(value = "cdrModuleApps", required = true) List<CdrModuleAppJson> theCdrModuleApps) {
040                Objects.requireNonNull(theExternalApps);
041                Objects.requireNonNull(theBundledApps);
042                Objects.requireNonNull(theCdrModuleApps);
043                Objects.requireNonNull(theInternalApps);
044                externalApps = theExternalApps;
045                bundledApps = theBundledApps;
046                cdrModuleApps = theCdrModuleApps;
047                internalApps = theInternalApps;
048        }
049}