diff --git a/modules/core/distribution/pom.xml b/modules/core/distribution/pom.xml
index 5ebb3cd8..9effc12d 100644
--- a/modules/core/distribution/pom.xml
+++ b/modules/core/distribution/pom.xml
@@ -175,6 +175,34 @@
+
+
+ create-app-mgt-schema
+ package
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
create-JAGH2-schema
diff --git a/modules/core/distribution/src/assembly/bin.xml b/modules/core/distribution/src/assembly/bin.xml
index 7409ff54..7aa807ce 100644
--- a/modules/core/distribution/src/assembly/bin.xml
+++ b/modules/core/distribution/src/assembly/bin.xml
@@ -822,6 +822,15 @@
true
644
+
+
+ ../p2-profile-gen/target/wso2carbon-core-${carbon.kernel.version}/repository/conf/identity/application-authentication.xml
+
+ ${pom.artifactId}-${pom.version}/repository/conf/identity
+
+ true
+ 644
+
src/repository/conf/application-authenticators.xml
@@ -842,12 +851,6 @@
644
-
- src/repository/conf/identity/application-authentication.xml
- ${pom.artifactId}-${pom.version}/repository/conf/identity
-
- 644
-
src/repository/conf/identity/thrift-authentication.xml
${pom.artifactId}-${pom.version}/repository/conf/identity
@@ -1033,6 +1036,15 @@
WSO2AM_DB.h2.db
644
+
+
+
+ target/wso2carbon-core-${carbon.kernel.version}/repository/database/WSO2APPM_DB.h2.db
+
+ ${pom.artifactId}-${pom.version}/repository/database
+ WSO2APPM_DB.h2.db
+ 644
+
diff --git a/modules/core/distribution/src/repository/conf/app-manager.xml b/modules/core/distribution/src/repository/conf/app-manager.xml
index 53552cfe..106046b4 100644
--- a/modules/core/distribution/src/repository/conf/app-manager.xml
+++ b/modules/core/distribution/src/repository/conf/app-manager.xml
@@ -6,7 +6,7 @@
JNDI name of the data source to be used by the app management components such as store, publisher, gateway
This data source should be defined in the master-datasources.xml file in conf/datasources directory.
-->
- jdbc/WSO2AM_DB
+ jdbc/WSO2APPM_DB
jdbc/ES_Storage
@@ -163,7 +163,7 @@
This data source is used to write/read UI Activity changes (eg: App Hit count)
to seperate database. When using DAS to analyze the changes it needs to configure this data source appropriately.
-->
- jdbc/WSO2AM_DB
+ jdbc/WSO2APPM_DB
IDN_OAUTH_CONSUMER_APPS(CONSUMER_KEY) and (SAML2_SSO_ISSUER) --> APM_APP(SAML2_SSO_ISSUER)
+CREATE TABLE APM_API_CONSUMER_APPS(
+ ID INTEGER,
+ SAML2_SSO_ISSUER VARCHAR2(500),
+ APP_CONSUMER_KEY VARCHAR2(512),
+ API_TOKEN_ENDPOINT VARCHAR2(1024),
+ API_CONSUMER_KEY VARCHAR2(512),
+ API_CONSUMER_SECRET VARCHAR2(512),
+ APP_NAME VARCHAR2(512),
+ PRIMARY KEY (ID, APP_CONSUMER_KEY)
+)
+/
+
+CREATE SEQUENCE APM_API_CONSUMER_APPS_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
+/
+
+CREATE OR REPLACE TRIGGER APM_API_CONSUMER_APPS_TRG
+ BEFORE INSERT
+ ON APM_API_CONSUMER_APPS
+ REFERENCING NEW AS NEW
+ FOR EACH ROW
+ BEGIN
+ SELECT APM_API_CONSUMER_APPS_SEQ.nextval INTO :NEW.ID FROM dual;
+ END;
+ /
+
+
+
+
+CREATE TABLE APM_APP_HITS (
+ UUID VARCHAR2(500) NOT NULL,
+ APP_NAME VARCHAR2(200) NOT NULL,
+ VERSION VARCHAR2(50),
+ CONTEXT VARCHAR2(256) NOT NULL,
+ USER_ID VARCHAR2(50) NOT NULL,
+ TENANT_ID INTEGER,
+ HIT_TIME TIMESTAMP NOT NULL,
+ PRIMARY KEY (UUID, USER_ID, TENANT_ID, HIT_TIME)
+)
+/
+
+CREATE TABLE APM_APP_JAVA_POLICY(
+ JAVA_POLICY_ID INTEGER,
+ DISPLAY_NAME VARCHAR2(100) NOT NULL,
+ FULL_QUALIFI_NAME VARCHAR2(256) NOT NULL,
+ DESCRIPTION VARCHAR2(2500),
+ DISPLAY_ORDER_SEQ_NO INTEGER NOT NULL,
+ IS_MANDATORY NUMBER(1) DEFAULT 0,
+ POLICY_PROPERTIES VARCHAR2(512) NULL,
+ IS_GLOBAL NUMBER(1) DEFAULT 1,
+ PRIMARY KEY(JAVA_POLICY_ID),
+ UNIQUE(FULL_QUALIFI_NAME,DISPLAY_ORDER_SEQ_NO)
+)
+/
+
+CREATE SEQUENCE APM_APP_JAVA_POLICY_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
+/
+
+CREATE OR REPLACE TRIGGER APM_APP_JAVA_POLICY_TRG
+ BEFORE INSERT
+ ON APM_APP_JAVA_POLICY
+ REFERENCING NEW AS NEW
+ FOR EACH ROW
+ BEGIN
+ SELECT APM_APP_JAVA_POLICY_SEQ.nextval INTO :NEW.JAVA_POLICY_ID FROM dual;
+ END;
+ /
+
+CREATE TABLE APM_APP_JAVA_POLICY_MAPPING(
+ JAVA_POLICY_ID INTEGER NOT NULL,
+ APP_ID INTEGER NOT NULL,
+ PRIMARY KEY (JAVA_POLICY_ID,APP_ID),
+ FOREIGN KEY (JAVA_POLICY_ID) REFERENCES APM_APP_JAVA_POLICY(JAVA_POLICY_ID) ON DELETE CASCADE,
+ FOREIGN KEY (APP_ID) REFERENCES APM_APP(APP_ID) ON DELETE CASCADE
+)
+/
+
+CREATE TABLE APM_EXTERNAL_STORES (
+ APP_STORE_ID INTEGER,
+ APP_ID INTEGER,
+ STORE_ID VARCHAR2(255) NOT NULL,
+ FOREIGN KEY(APP_ID) REFERENCES APM_APP(APP_ID) ON DELETE CASCADE,
+ PRIMARY KEY (APP_STORE_ID)
+)
+/
+
+CREATE SEQUENCE APM_EXTERNAL_STORES_SEQ START WITH 1 INCREMENT BY 1
+/
+
+CREATE OR REPLACE TRIGGER APM_EXTERNAL_STORES_TRG
+ BEFORE INSERT
+ ON APM_EXTERNAL_STORES
+ REFERENCING NEW AS NEW
+ FOR EACH ROW
+ BEGIN
+ SELECT APM_EXTERNAL_STORES_SEQ.nextval INTO :NEW.APP_STORE_ID FROM dual;
+ END;
+/
+
+CREATE TABLE APM_APP_DEFAULT_VERSION (
+ DEFAULT_VERSION_ID INTEGER,
+ APP_NAME VARCHAR2(256),
+ APP_PROVIDER VARCHAR2(256),
+ DEFAULT_APP_VERSION VARCHAR2(30),
+ PUBLISHED_DEFAULT_APP_VERSION VARCHAR2(30),
+ TENANT_ID INTEGER,
+PRIMARY KEY(DEFAULT_VERSION_ID)
+)
+/
+
+CREATE SEQUENCE APM_APP_DEFAULT_VERSION_SEQ START WITH 1 INCREMENT BY 1
+/
+
+CREATE OR REPLACE TRIGGER APM_APP_DEFAULT_VERSION_TRG
+ BEFORE INSERT
+ ON APM_APP_DEFAULT_VERSION
+ REFERENCING NEW AS NEW
+ FOR EACH ROW
+ BEGIN
+ SELECT APM_APP_DEFAULT_VERSION_SEQ.nextval INTO :NEW.DEFAULT_VERSION_ID FROM dual;
+ END;
+/
+
+CREATE TABLE APM_FAVOURITE_APPS (
+ ID INTEGER ,
+ USER_ID VARCHAR(50) NOT NULL,
+ TENANT_ID INTEGER NOT NULL,
+ APP_ID INTEGER NOT NULL,
+ CREATED_TIME DATE NOT NULL,
+ PRIMARY KEY (ID),
+ FOREIGN KEY(APP_ID) REFERENCES APM_APP(APP_ID) ON DELETE CASCADE,
+ UNIQUE (TENANT_ID,USER_ID,APP_ID)
+)
+/
+
+CREATE SEQUENCE APM_FAVOURITE_APPS_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
+/
+
+CREATE OR REPLACE TRIGGER APM_FAVOURITE_APPS_TRG
+ BEFORE INSERT
+ ON APM_FAVOURITE_APPS
+ REFERENCING NEW AS NEW
+ FOR EACH ROW
+ BEGIN
+ SELECT APM_FAVOURITE_APPS_SEQ.nextval INTO :NEW.ID FROM dual;
+ END;
+/
+
+CREATE TABLE APM_STORE_FAVOURITE_PAGE (
+ ID INTEGER ,
+ USER_ID VARCHAR(50) NOT NULL,
+ TENANT_ID_OF_USER INTEGER NOT NULL,
+ TENANT_ID_OF_STORE INTEGER NOT NULL,
+ PRIMARY KEY (ID)
+)
+/
+
+CREATE SEQUENCE APM_STORE_FAVOURITE_PAGE_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
+/
+
+CREATE OR REPLACE TRIGGER APM_STORE_FAVOURITE_PAGE_TRG
+ BEFORE INSERT
+ ON APM_STORE_FAVOURITE_PAGE
+ REFERENCING NEW AS NEW
+ FOR EACH ROW
+ BEGIN
+ SELECT APM_STORE_FAVOURITE_PAGE_SEQ.nextval INTO :NEW.ID FROM dual;
+ END;
+/
+
+CREATE TABLE APM_ONE_TIME_DOWNLOAD_LINK (
+ ID INTEGER,
+ BINARY_FILE VARCHAR(500) NOT NULL,
+ UUID VARCHAR(500) NOT NULL,
+ IS_DOWNLOADED NUMBER(1) NOT NULL,
+ USERNAME VARCHAR(255),
+ TENANT_ID INTEGER,
+ TENANT_DOMAIN VARCHAR(255),
+ CREATED_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (ID)
+)
+/
+
+CREATE SEQUENCE APM_ONE_TIME_DOWNLOAD_LINK_SEQ START WITH 1 INCREMENT BY 1 NOCACHE
+/
+
+CREATE OR REPLACE TRIGGER APM_ONE_TIME_DOWNLOAD_LINK_TRG
+ BEFORE INSERT
+ ON APM_ONE_TIME_DOWNLOAD_LINK
+ REFERENCING NEW AS NEW
+ FOR EACH ROW
+ BEGIN
+ SELECT APM_ONE_TIME_DOWNLOAD_LINK_SEQ.nextval INTO :NEW.ID FROM dual;
+ END;
+/
+
+
+INSERT INTO APM_APP_JAVA_POLICY(DISPLAY_NAME, FULL_QUALIFI_NAME, DESCRIPTION, DISPLAY_ORDER_SEQ_NO,IS_MANDATORY, IS_GLOBAL )
+VALUES ('Reverse Proxy Handler','org.wso2.carbon.appmgt.gateway.handlers.proxy.ReverseProxyHandler','',1,1,1)
+/
+
+INSERT INTO APM_APP_JAVA_POLICY(DISPLAY_NAME, FULL_QUALIFI_NAME, DESCRIPTION, DISPLAY_ORDER_SEQ_NO,IS_MANDATORY,IS_GLOBAL)
+VALUES ('SAML2 Authentication Handler','org.wso2.carbon.appmgt.gateway.handlers.security.authentication.SAML2AuthenticationHandler','',2,1,1)
+/
+
+INSERT INTO APM_APP_JAVA_POLICY(DISPLAY_NAME, FULL_QUALIFI_NAME, DESCRIPTION, DISPLAY_ORDER_SEQ_NO,IS_MANDATORY,IS_GLOBAL)
+VALUES ('Subscription Handler', 'org.wso2.carbon.appmgt.gateway.handlers.subscription.SubscriptionsHandler','',3,1,1)
+/
+
+INSERT INTO APM_APP_JAVA_POLICY(DISPLAY_NAME, FULL_QUALIFI_NAME, DESCRIPTION, DISPLAY_ORDER_SEQ_NO,IS_MANDATORY,IS_GLOBAL)
+VALUES ('Authorization Handler', 'org.wso2.carbon.appmgt.gateway.handlers.security.entitlement.AuthorizationHandler','',4,1,1)
+/
+
+INSERT INTO APM_APP_JAVA_POLICY(DISPLAY_NAME, FULL_QUALIFI_NAME, DESCRIPTION, DISPLAY_ORDER_SEQ_NO,IS_MANDATORY,IS_GLOBAL)
+VALUES ('Entitlement Handler','org.wso2.carbon.appmgt.gateway.handlers.security.entitlement.EntitlementHandler','',5,1,1)
+/
+
+INSERT INTO APM_APP_JAVA_POLICY(DISPLAY_NAME, FULL_QUALIFI_NAME, DESCRIPTION, DISPLAY_ORDER_SEQ_NO,IS_MANDATORY, POLICY_PROPERTIES,IS_GLOBAL )
+VALUES ('API Throttle Handler','org.wso2.carbon.appmgt.gateway.handlers.throttling.APIThrottleHandler','',6,1,'{ "id": "A", "policyKey": "gov:/appmgt/applicationdata/tiers.xml"}',1)
+/
+
+INSERT INTO APM_APP_JAVA_POLICY(DISPLAY_NAME, FULL_QUALIFI_NAME, DESCRIPTION, DISPLAY_ORDER_SEQ_NO,IS_MANDATORY,IS_GLOBAL)
+VALUES ('Publish Statistics:','org.wso2.carbon.appmgt.usage.publisher.APPMgtUsageHandler','',7,0,1)
+/
+
+
diff --git a/modules/core/distribution/src/repository/resources/dbscripts/appmgt/postgresql.sql b/modules/core/distribution/src/repository/resources/dbscripts/appmgt/postgresql.sql
new file mode 100644
index 00000000..6798fc83
--- /dev/null
+++ b/modules/core/distribution/src/repository/resources/dbscripts/appmgt/postgresql.sql
@@ -0,0 +1,310 @@
+BEGIN TRANSACTION;
+
+CREATE TABLE IF NOT EXISTS IDN_BASE_TABLE (
+ PRODUCT_NAME VARCHAR (20),
+ PRIMARY KEY (PRODUCT_NAME)
+)
+;
+
+INSERT INTO IDN_BASE_TABLE values ('WSO2 Identity Server');
+
+CREATE TABLE IF NOT EXISTS IDN_OAUTH_CONSUMER_APPS (
+ CONSUMER_KEY VARCHAR (512),
+ CONSUMER_SECRET VARCHAR (512),
+ USERNAME VARCHAR (255),
+ TENANT_ID INTEGER DEFAULT 0,
+ APP_NAME VARCHAR (255),
+ OAUTH_VERSION VARCHAR (128),
+ CALLBACK_URL VARCHAR (1024),
+ GRANT_TYPES VARCHAR (1024),
+ PRIMARY KEY (CONSUMER_KEY)
+)
+;
+
+CREATE TABLE IF NOT EXISTS IDN_OAUTH1A_REQUEST_TOKEN (
+ REQUEST_TOKEN VARCHAR (512),
+ REQUEST_TOKEN_SECRET VARCHAR (512),
+ CONSUMER_KEY VARCHAR (512),
+ CALLBACK_URL VARCHAR (1024),
+ SCOPE VARCHAR(2048),
+ AUTHORIZED VARCHAR (128),
+ OAUTH_VERIFIER VARCHAR (512),
+ AUTHZ_USER VARCHAR (512),
+ PRIMARY KEY (REQUEST_TOKEN),
+ FOREIGN KEY (CONSUMER_KEY) REFERENCES IDN_OAUTH_CONSUMER_APPS(CONSUMER_KEY)
+)
+;
+
+CREATE TABLE IF NOT EXISTS IDN_OAUTH1A_ACCESS_TOKEN (
+ ACCESS_TOKEN VARCHAR (512),
+ ACCESS_TOKEN_SECRET VARCHAR (512),
+ CONSUMER_KEY VARCHAR (512),
+ SCOPE VARCHAR(2048),
+ AUTHZ_USER VARCHAR (512),
+ PRIMARY KEY (ACCESS_TOKEN),
+ FOREIGN KEY (CONSUMER_KEY) REFERENCES IDN_OAUTH_CONSUMER_APPS(CONSUMER_KEY)
+)
+;
+
+CREATE TABLE IF NOT EXISTS IDN_OAUTH2_AUTHORIZATION_CODE (
+ AUTHORIZATION_CODE VARCHAR (512),
+ CONSUMER_KEY VARCHAR (512),
+ SCOPE VARCHAR(2048),
+ AUTHZ_USER VARCHAR (512),
+ TIME_CREATED TIMESTAMP,
+ VALIDITY_PERIOD BIGINT,
+ PRIMARY KEY (AUTHORIZATION_CODE),
+ FOREIGN KEY (CONSUMER_KEY) REFERENCES IDN_OAUTH_CONSUMER_APPS(CONSUMER_KEY)
+)
+;
+
+CREATE TABLE IF NOT EXISTS IDN_OAUTH2_ACCESS_TOKEN (
+ ACCESS_TOKEN VARCHAR (255),
+ REFRESH_TOKEN VARCHAR (255),
+ CONSUMER_KEY VARCHAR (255),
+ AUTHZ_USER VARCHAR (255),
+ USER_TYPE VARCHAR (255),
+ TIME_CREATED TIMESTAMP,
+ VALIDITY_PERIOD BIGINT,
+ TOKEN_SCOPE VARCHAR (25),
+ TOKEN_STATE VARCHAR (25) DEFAULT 'ACTIVE',
+ TOKEN_STATE_ID VARCHAR (255) DEFAULT 'NONE',
+ PRIMARY KEY (ACCESS_TOKEN),
+ FOREIGN KEY (CONSUMER_KEY) REFERENCES IDN_OAUTH_CONSUMER_APPS(CONSUMER_KEY)
+)
+;
+
+CREATE TABLE IF NOT EXISTS IDN_OPENID_USER_RPS (
+ USER_NAME VARCHAR(255) NOT NULL,
+ TENANT_ID INTEGER DEFAULT 0,
+ RP_URL VARCHAR(255) NOT NULL,
+ TRUSTED_ALWAYS VARCHAR(128) DEFAULT 'FALSE',
+ LAST_VISIT DATE NOT NULL,
+ VISIT_COUNT INTEGER DEFAULT 0,
+ DEFAULT_PROFILE_NAME VARCHAR(255) DEFAULT 'DEFAULT',
+ PRIMARY KEY (USER_NAME, TENANT_ID, RP_URL)
+)
+;
+
+CREATE SEQUENCE AM_SUBSCRIBER_SEQUENCE START WITH 1 INCREMENT BY 1;
+CREATE TABLE IF NOT EXISTS AM_SUBSCRIBER (
+ SUBSCRIBER_ID INTEGER DEFAULT nextval('am_subscriber_sequence'),
+ USER_ID VARCHAR(50) NOT NULL,
+ TENANT_ID INTEGER NOT NULL,
+ EMAIL_ADDRESS VARCHAR(256) NULL,
+ DATE_SUBSCRIBED DATE NOT NULL,
+ PRIMARY KEY (SUBSCRIBER_ID),
+ UNIQUE (TENANT_ID,USER_ID)
+)
+;
+
+CREATE SEQUENCE AM_APPLICATION_SEQUENCE START WITH 1 INCREMENT BY 1 ;
+CREATE TABLE IF NOT EXISTS AM_APPLICATION (
+ APPLICATION_ID INTEGER DEFAULT nextval('am_application_sequence'),
+ NAME VARCHAR(100),
+ SUBSCRIBER_ID INTEGER,
+ APPLICATION_TIER VARCHAR(50) DEFAULT 'Unlimited',
+ CALLBACK_URL VARCHAR(512),
+ DESCRIPTION VARCHAR(512),
+ APPLICATION_STATUS VARCHAR(50) DEFAULT 'APPROVED',
+ FOREIGN KEY(SUBSCRIBER_ID) REFERENCES AM_SUBSCRIBER(SUBSCRIBER_ID) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY(APPLICATION_ID),
+ UNIQUE (NAME,SUBSCRIBER_ID)
+)
+;
+
+CREATE SEQUENCE APM_BUSINESS_OWNER_SEQUENCE START WITH 1 INCREMENT BY 1 ;
+CREATE TABLE IF NOT EXISTS APM_BUSINESS_OWNER(
+ OWNER_ID INTEGER DEFAULT nextval('apm_business_owner_sequence'),
+ OWNER_NAME VARCHAR(200) NOT NULL,
+ OWNER_EMAIL VARCHAR(300) NOT NULL,
+ OWNER_DESC VARCHAR(1500),
+ OWNER_SITE VARCHAR(200),
+ TENANT_ID INTEGER,
+ PRIMARY KEY(OWNER_ID),
+ UNIQUE (OWNER_NAME,OWNER_EMAIL,TENANT_ID)
+
+);
+
+CREATE SEQUENCE APM_BUSINESS_OWNER_PROPERTY_SEQUENCE START WITH 1 INCREMENT BY 1 ;
+CREATE TABLE IF NOT EXISTS APM_BUSINESS_OWNER_PROPERTY(
+ OWNER_PROP_ID INTEGER DEFAULT nextval('apm_business_owner_property_sequence'),
+ OWNER_ID INTEGER NOT NULL,
+ NAME VARCHAR(200) NOT NULL,
+ VALUE VARCHAR(300) NOT NULL,
+ SHOW_IN_STORE BOOLEAN NOT NULL,
+ PRIMARY KEY(OWNER_PROP_ID),
+ FOREIGN KEY(OWNER_ID) REFERENCES APM_BUSINESS_OWNER(OWNER_ID)
+);
+
+CREATE SEQUENCE APPMGR_APP_SEQUENCE START WITH 1 INCREMENT BY 1;
+CREATE TABLE IF NOT EXISTS APPMGR_APP (
+ API_ID INTEGER DEFAULT nextval('appmgr_app_sequence'),
+ API_PROVIDER VARCHAR(256),
+ API_NAME VARCHAR(256),
+ API_VERSION VARCHAR(30),
+ CONTEXT VARCHAR(256),
+ PRIMARY KEY(API_ID),
+ UNIQUE (API_PROVIDER,API_NAME,API_VERSION)
+)
+;
+
+CREATE SEQUENCE APPMGR_APP_URL_MAPPING_SEQUENCE START WITH 1 INCREMENT BY 1;
+CREATE TABLE IF NOT EXISTS APPMGR_APP_URL_MAPPING (
+ URL_MAPPING_ID INTEGER DEFAULT nextval('appmgr_app_url_mapping_sequence'),
+ API_ID INTEGER NOT NULL,
+ HTTP_METHOD VARCHAR(20) NULL,
+ AUTH_SCHEME VARCHAR(50) NULL,
+ URL_PATTERN VARCHAR(512) NULL,
+ THROTTLING_TIER varchar(512) DEFAULT NULL,
+ USER_ROLES varchar(512) DEFAULT NULL,
+ ENTITLEMENT_POLICY_ID varchar(512) DEFAULT NULL,
+ PRIMARY KEY(URL_MAPPING_ID)
+)
+;
+
+CREATE SEQUENCE AM_SUBSCRIPTION_SEQUENCE START WITH 1 INCREMENT BY 1;
+CREATE TABLE IF NOT EXISTS AM_SUBSCRIPTION (
+ SUBSCRIPTION_ID INTEGER DEFAULT nextval('am_subscription_sequence'),
+ SUBSCRIPTION_TYPE VARCHAR(50),
+ TIER_ID VARCHAR(50),
+ API_ID INTEGER,
+ LAST_ACCESSED DATE NULL,
+ APPLICATION_ID INTEGER,
+ SUB_STATUS VARCHAR(50),
+ FOREIGN KEY(APPLICATION_ID) REFERENCES AM_APPLICATION(APPLICATION_ID) ON UPDATE CASCADE ON DELETE RESTRICT,
+ FOREIGN KEY(API_ID) REFERENCES APPMGR_APP(API_ID) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY (SUBSCRIPTION_ID)
+)
+;
+
+CREATE TABLE IF NOT EXISTS AM_SUBSCRIPTION_KEY_MAPPING (
+ SUBSCRIPTION_ID INTEGER,
+ ACCESS_TOKEN VARCHAR(512),
+ KEY_TYPE VARCHAR(512) NOT NULL,
+ FOREIGN KEY(SUBSCRIPTION_ID) REFERENCES AM_SUBSCRIPTION(SUBSCRIPTION_ID) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY(SUBSCRIPTION_ID,ACCESS_TOKEN)
+)
+;
+
+CREATE TABLE IF NOT EXISTS AM_APPLICATION_KEY_MAPPING (
+ APPLICATION_ID INTEGER,
+ CONSUMER_KEY VARCHAR(512),
+ KEY_TYPE VARCHAR(512) NOT NULL,
+ FOREIGN KEY(APPLICATION_ID) REFERENCES AM_APPLICATION(APPLICATION_ID) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY(APPLICATION_ID,CONSUMER_KEY)
+)
+;
+
+CREATE SEQUENCE APPMGR_APP_LC_EVENT_SEQUENCE START WITH 1 INCREMENT BY 1;
+CREATE TABLE IF NOT EXISTS APPMGR_APP_LC_EVENT (
+ EVENT_ID INTEGER DEFAULT nextval('appmgr_app_lc_event_sequence'),
+ API_ID INTEGER NOT NULL,
+ PREVIOUS_STATE VARCHAR(50),
+ NEW_STATE VARCHAR(50) NOT NULL,
+ USER_ID VARCHAR(50) NOT NULL,
+ TENANT_ID INTEGER NOT NULL,
+ EVENT_DATE DATE NOT NULL,
+ FOREIGN KEY(API_ID) REFERENCES APPMGR_APP(API_ID) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY (EVENT_ID)
+)
+;
+
+CREATE TABLE IF NOT EXISTS AM_APP_KEY_DOMAIN_MAPPING (
+ CONSUMER_KEY VARCHAR(255),
+ AUTHZ_DOMAIN VARCHAR(255) DEFAULT 'ALL',
+ PRIMARY KEY (CONSUMER_KEY,AUTHZ_DOMAIN),
+ FOREIGN KEY (CONSUMER_KEY) REFERENCES IDN_OAUTH_CONSUMER_APPS(CONSUMER_KEY)
+)
+;
+
+CREATE SEQUENCE APPMGR_APP_COMMENTS_SEQUENCE START WITH 1 INCREMENT BY 1;
+CREATE TABLE IF NOT EXISTS APPMGR_APP_COMMENTS (
+ COMMENT_ID INTEGER DEFAULT nextval('appmgr_app_comments_sequence'),
+ COMMENT_TEXT VARCHAR(512),
+ COMMENTED_USER VARCHAR(255),
+ DATE_COMMENTED DATE NOT NULL,
+ API_ID INTEGER NOT NULL,
+ FOREIGN KEY(API_ID) REFERENCES APPMGR_APP(API_ID) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY (COMMENT_ID)
+)
+;
+
+CREATE SEQUENCE AM_WORKFLOWS_SEQUENCE START WITH 1 INCREMENT BY 1;
+CREATE TABLE IF NOT EXISTS AM_WORKFLOWS(
+ WF_ID INTEGER DEFAULT nextval('am_workflows_sequence'),
+ WF_REFERENCE VARCHAR(255) NOT NULL,
+ WF_TYPE VARCHAR(255) NOT NULL,
+ WF_STATUS VARCHAR(255) NOT NULL,
+ WF_CREATED_TIME TIMESTAMP,
+ WF_UPDATED_TIME TIMESTAMP,
+ WF_STATUS_DESC VARCHAR(1000),
+ TENANT_ID INTEGER,
+ TENANT_DOMAIN VARCHAR(255),
+ WF_EXTERNAL_REFERENCE VARCHAR(255) NOT NULL,
+ PRIMARY KEY (WF_ID),
+ UNIQUE (WF_EXTERNAL_REFERENCE)
+)
+;
+
+CREATE SEQUENCE APPMGR_APP_RATINGS_SEQUENCE START WITH 1 INCREMENT BY 1;
+CREATE TABLE IF NOT EXISTS APPMGR_APP_RATINGS (
+ RATING_ID INTEGER DEFAULT nextval('appmgr_app_ratings_sequence'),
+ API_ID INTEGER,
+ RATING INTEGER,
+ SUBSCRIBER_ID INTEGER,
+ FOREIGN KEY(API_ID) REFERENCES APPMGR_APP(API_ID) ON UPDATE CASCADE ON DELETE RESTRICT,
+ FOREIGN KEY(SUBSCRIBER_ID) REFERENCES AM_SUBSCRIBER(SUBSCRIBER_ID) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY (RATING_ID)
+)
+;
+
+CREATE SEQUENCE AM_TIER_PERMISSIONS_SEQUENCE START WITH 1 INCREMENT BY 1;
+CREATE TABLE IF NOT EXISTS AM_TIER_PERMISSIONS (
+ TIER_PERMISSIONS_ID INTEGER DEFAULT nextval('am_tier_permissions_sequence'),
+ TIER VARCHAR(50) NOT NULL,
+ PERMISSIONS_TYPE VARCHAR(50) NOT NULL,
+ ROLES VARCHAR(512) NOT NULL,
+ TENANT_ID INTEGER NOT NULL,
+ PRIMARY KEY(TIER_PERMISSIONS_ID)
+);
+
+CREATE TABLE IF NOT EXISTS IDN_THRIFT_SESSION (
+ SESSION_ID VARCHAR(255) NOT NULL,
+ USER_NAME VARCHAR(255) NOT NULL,
+ CREATED_TIME VARCHAR(255) NOT NULL,
+ LAST_MODIFIED_TIME VARCHAR(255) NOT NULL,
+ PRIMARY KEY (SESSION_ID)
+
+)
+;
+
+CREATE SEQUENCE AM_EXTERNAL_STORES_SEQUENCE START WITH 1 INCREMENT BY 1;
+CREATE TABLE IF NOT EXISTS AM_EXTERNAL_STORES (
+ APISTORE_ID INTEGER DEFAULT nextval('am_external_stores_sequence'),
+ API_ID INTEGER,
+ STORE_ID VARCHAR(255) NOT NULL,
+ STORE_DISPLAY_NAME VARCHAR(255) NOT NULL,
+ STORE_ENDPOINT VARCHAR(255) NOT NULL,
+ STORE_TYPE VARCHAR(255) NOT NULL,
+ FOREIGN KEY(API_ID) REFERENCES APPMGR_APP(API_ID) ON UPDATE CASCADE ON DELETE RESTRICT,
+ PRIMARY KEY (APISTORE_ID)
+)
+;
+
+CREATE SEQUENCE APM_APP_DEFAULT_VERSION_SEQUENCE START WITH 1 INCREMENT BY 1;
+CREATE TABLE IF NOT EXISTS APM_APP_DEFAULT_VERSION (
+ DEFAULT_VERSION_ID INTEGER DEFAULT nextval('apm_app_default_version_sequence'),
+ APP_NAME VARCHAR(256),
+ APP_PROVIDER VARCHAR(256),
+ DEFAULT_APP_VERSION VARCHAR(30),
+ PUBLISHED_DEFAULT_APP_VERSION VARCHAR(30),
+ TENANT_ID INTEGER,
+PRIMARY KEY(DEFAULT_VERSION_ID)
+)
+;
+
+CREATE INDEX IDX_SUB_APP_ID ON AM_SUBSCRIPTION (APPLICATION_ID, SUBSCRIPTION_ID)
+;
+CREATE INDEX IDX_AT_CK_AU ON IDN_OAUTH2_ACCESS_TOKEN(CONSUMER_KEY, AUTHZ_USER, TOKEN_STATE, USER_TYPE);
+commit;