001package ca.cdr.api.model.json.appgallery.portal;
002
003/*
004 * #%L
005 * Smile CDR - CDR
006 * %%
007 * Copyright (C) 2016 - 2026 Smile CDR, Inc.
008 * %%
009 * All rights reserved.
010 * #L%
011 */
012
013import ca.cdr.api.model.json.AbstractModelJson;
014import ca.cdr.api.model.json.JsonDateDeserializer;
015import ca.cdr.api.model.json.JsonDateSerializer;
016import ca.cdr.api.model.json.appgallery.common.AGApplicationJson;
017import ca.cdr.api.model.json.appgallery.common.AGIdentifierJson;
018import ca.cdr.api.model.json.appgallery.common.AGMetaDataJson;
019import ca.cdr.api.model.json.appgallery.common.AGOauthJson;
020import ca.cdr.api.model.json.appgallery.common.AGProfileJson;
021import ca.cdr.api.model.json.appgallery.common.AGScopeJson;
022import io.swagger.v3.oas.annotations.media.Schema;
023import tools.jackson.databind.annotation.JsonDeserialize;
024import tools.jackson.databind.annotation.JsonSerialize;
025
026import java.util.Date;
027import java.util.List;
028
029/**
030 * The developer portal's view of one appSphere application: the response body of the Developer Portal's
031 * get-application endpoint, and a hook parameter of
032 * {@link ca.cdr.api.fhir.interceptor.CdrPointcut#AG_OAUTH2_CLIENT_SECRET_REGENERATED}.
033 */
034public class AGPortalJson extends AbstractModelJson {
035        public AGIdentifierJson identifier;
036
037        @Schema(description = "Application being registered")
038        public AGApplicationJson application;
039
040        @Schema(description = "Developer profile at the time of registration")
041        public AGProfileJson profile;
042
043        @Schema(description = "Information to help users search for and find the application.")
044        public List<String> classification;
045
046        public List<String> prerequisites;
047
048        @Schema(description = "SMART scopes required for the application.")
049        public List<AGScopeJson> scopes;
050
051        @Schema(description = "OIDC details")
052        public AGOauthJson oauth;
053
054        @JsonSerialize(using = JsonDateSerializer.class)
055        @JsonDeserialize(using = JsonDateDeserializer.class)
056        public Date createdDate;
057
058        @Schema(description = "Application icon (base64 encoded)")
059        public String icon;
060
061        public AGIdentifierJson attestationIdentifier;
062
063        @Schema(description = "Notes for the reviewer to help them evaluate submissions")
064        public String registrationNote;
065
066        @Schema(description = "Metadata associated with registration")
067        public List<AGMetaDataJson> metaDataValues;
068
069        public List<String> countryIsoCodeAlpha2;
070
071        @Schema(description = "Current Developer profile associated with registration")
072        public AGProfileJson currentProfile;
073}