chore: 更新新开普测试环境的配置
author刘洪青 <loie.engine@gmail.com>
Mon, 7 Sep 2020 04:20:33 +0000 (12:20 +0800)
committer刘洪青 <loie.engine@gmail.com>
Mon, 7 Sep 2020 04:20:33 +0000 (12:20 +0800)
24 files changed:
project/newcapec-test/k8s-rancher/1.authx-service/0.authx-service/9.poa-api-docs-installer.yaml
project/newcapec-test/k8s-rancher/1.authx-service/10.0.init.sql
project/newcapec-test/k8s-rancher/1.authx-service/2.user-data-service/4.0.user-data-service-installer.yaml
project/newcapec-test/k8s-rancher/1.authx-service/2.user-data-service/4.1.user-data-service-poa.yaml
project/newcapec-test/k8s-rancher/1.authx-service/2.user-data-service/4.2.user-data-service-goa.yaml
project/newcapec-test/k8s-rancher/1.authx-service/2.user-data-service/4.3.user-data-service-biz.yaml
project/newcapec-test/k8s-rancher/1.authx-service/2.user-data-service/5.user-data-service-datax-job.yaml
project/newcapec-test/k8s-rancher/6.admin-platform/6.admin-center/0.admin-center-base.yaml
project/newcapec-test/k8s-rancher/6.admin-platform/6.admin-center/1.admin-center-env.yaml
project/newcapec-test/k8s-rancher/6.admin-platform/6.admin-center/2.admin-center-ingresses.yaml
project/newcapec-test/k8s-rancher/6.admin-platform/6.admin-center/4.0.admin-center-sa-installer.yaml
project/newcapec-test/k8s-rancher/6.admin-platform/6.admin-center/4.1.admin-center-poa.yaml
project/newcapec-test/k8s-rancher/6.admin-platform/6.admin-center/4.2.admin-center-sa.yaml
project/newcapec-test/k8s-rancher/6.admin-platform/6.admin-center/4.4.admin-center-bff.yaml
project/newcapec-test/k8s-rancher/6.admin-platform/6.admin-center/4.5.admin-center-zuul.yaml
project/newcapec-test/k8s-rancher/6.admin-platform/6.admin-center/4.9.admin-center-management.yaml
project/newcapec-test/k8s-rancher/6.admin-platform/7.admin-platform/0.admin-platform-base.yaml
project/newcapec-test/k8s-rancher/6.admin-platform/7.admin-platform/2.admin-platform-ingresses.yaml
project/newcapec-test/k8s-rancher/6.admin-platform/7.admin-platform/4.2.admin-platform.yaml
project/newcapec-test/poa-api-docs/admin-center-poa.v1.yaml [new file with mode: 0644]
project/newcapec-test/poa-api-docs/communicate-center-poa.v1.yaml [new file with mode: 0644]
project/newcapec-test/poa-api-docs/exec.sh [new file with mode: 0755]
project/newcapec-test/poa-api-docs/user-authorization-service-poa.v1.yaml [new file with mode: 0644]
project/newcapec-test/poa-api-docs/user-data-service-poa.v1.yaml [new file with mode: 0644]

index 4b24f61..7c15066 100644 (file)
@@ -12,7 +12,7 @@ data:
   ##
   # 平台OpenAPI的外网访问地址,
   # **修改** 学校的根域名
-  POA_SERVER_URL: http://poa.paas.xxx.edu.cn
+  POA_SERVER_URL: http://poa-test.newcapec.cn
 
 
 ---
index 42cfae0..f415dec 100644 (file)
@@ -28,7 +28,7 @@ set
   SERVICE_ID='https://security-center-test.paas.newcapec.cn/(.*)', 
   ID_TOKEN_ENABLED=1,
   JWT_AS_SERVICE_TICKET=1,
-  APPLICATION_DOMAIN='security-center.paas.newcapec.cn'
+  APPLICATION_DOMAIN='security-center-test.paas.newcapec.cn'
 where ID='122';  -- todo, modify
 
 commit;
index 46b78db..4433238 100644 (file)
@@ -28,7 +28,7 @@ spec:
       containers:
       - name: user-data-service-installer
         # 若使用了学校搭设的私有仓库,请修改
-        image: harbor.supwisdom.com/goa/installer:0.1.1-SNAPSHOT
+        image: harbor.supwisdom.com/goa/installer:1.0.0-SNAPSHOT
         imagePullPolicy: Always
         envFrom:
         - configMapRef:
index 6121637..bad098a 100644 (file)
@@ -85,7 +85,7 @@ spec:
       containers:
       - name: user-data-service-poa
         # 若使用了学校搭设的私有仓库,请修改
-        image: harbor.supwisdom.com/goa/poa-api:0.1.1-SNAPSHOT
+        image: harbor.supwisdom.com/goa/poa-api:1.0.0-SNAPSHOT
         imagePullPolicy: Always
         ports:
         - containerPort: 8080
index 515ddde..121f248 100644 (file)
@@ -101,7 +101,7 @@ spec:
       containers:
       - name: user-data-service-goa
         # 若使用了学校搭设的私有仓库,请修改
-        image: harbor.supwisdom.com/goa/goa-api:0.1.1-SNAPSHOT
+        image: harbor.supwisdom.com/goa/goa-api:1.0.0-SNAPSHOT
         imagePullPolicy: Always
         ports:
         - containerPort: 8080
index 46ade42..54e76ec 100644 (file)
@@ -80,7 +80,7 @@ spec:
       containers:
       - name: user-data-service-biz
         # 若使用了学校搭设的私有仓库,请修改
-        image: harbor.supwisdom.com/goa/biz-api:0.1.1-SNAPSHOT
+        image: harbor.supwisdom.com/goa/biz-api:1.0.0-SNAPSHOT
         imagePullPolicy: Always
         ports:
         - containerPort: 8080
index 1a94845..d99112b 100644 (file)
@@ -41,7 +41,7 @@ spec:
           containers:
           - name: user-data-service-datax-job
             # 若使用了学校搭设的私有仓库,请修改
-            image: harbor.supwisdom.com/goa/datax-job:0.1.1-SNAPSHOT
+            image: harbor.supwisdom.com/goa/datax-job:1.0.0-SNAPSHOT
             imagePullPolicy: Always
             envFrom:
             - configMapRef:
index 9aeb1f2..fb43537 100644 (file)
@@ -8,7 +8,7 @@
 apiVersion: v1
 kind: Namespace
 metadata:
-  name: admin-center
+  name: admin-center-test
   # labels:
   #   istio-injection: enabled
 
@@ -21,7 +21,7 @@ apiVersion: v1
 kind: Secret
 type: kubernetes.io/dockerconfigjson
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: harbor-registry
 data:
   # 修改harbor仓库配置,并使用 base64 工具进行编码
@@ -36,7 +36,7 @@ data:
 apiVersion: v1
 kind: Service
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: mysql-server
 spec:
   ports:
@@ -48,12 +48,12 @@ spec:
 kind: Endpoints
 apiVersion: v1
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: mysql-server
 subsets:
   - addresses:
       # 修改实际MySQL服务器的IP地址
-      - ip: 172.30.104.82
+      - ip: 192.168.116.91
     ports:
       - name: tcp-mysql
         port: 3306
@@ -72,7 +72,7 @@ metadata:
     app: redis
     release: redis-server
   name: redis-server
-  namespace: admin-center
+  namespace: admin-center-test
 type: Opaque
 data:
   REDIS_PASSWORD: OEt1d29zbE9pdXc3SA==
@@ -85,7 +85,7 @@ metadata:
     app: redis
     release: redis-server
   name: redis-server
-  namespace: admin-center
+  namespace: admin-center-test
 spec:
   ports:
   - name: redis
@@ -105,7 +105,7 @@ metadata:
     app: redis
     release: redis-server
   name: redis-server
-  namespace: admin-center
+  namespace: admin-center-test
 spec:
   podManagementPolicy: OrderedReady
   replicas: 1
index faaad82..9d42251 100644 (file)
@@ -4,7 +4,7 @@
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: jvm-env
 data:
   MAX_RAM_PERCENTAGE: "75.0"
@@ -13,7 +13,7 @@ data:
 apiVersion: v1
 kind: Secret
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: datasource-env-secret
 type: Opaque
 data:
@@ -22,14 +22,14 @@ data:
   # admin_center
   JDBC_USERNAME: YWRtaW5fY2VudGVy
   # 修改为实际的数据库密码,并使用 base64 工具进行编码
-  # kingstar
-  JDBC_PASSWORD: a2luZ3N0YXI=
+  # Nwpu@Supwisdom123
+  JDBC_PASSWORD: TndwdUBTdXB3aXNkb20xMjM=
 
 ---
 apiVersion: v1
 kind: Secret
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: redis-env-secret
 type: Opaque
 data:
index ec07477..2b1b6e5 100644 (file)
@@ -6,14 +6,14 @@
 apiVersion: extensions/v1beta1
 kind: Ingress
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-ingress
   annotations:
     nginx.ingress.kubernetes.io/proxy-buffer-size: "8k"
 spec:
   rules:
   # 修改为学校的根域名
-  - host: admin-center.paas.xxx.edu.cn
+  - host: admin-center-test.paas.newcapec.cn
     http:
       paths:
       - path: /
@@ -47,12 +47,12 @@ spec:
 apiVersion: extensions/v1beta1
 kind: Ingress
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-management-ingress
 spec:
   rules:
   # 修改为学校的根域名
-  - host: admin-management.paas.xxx.edu.cn
+  - host: admin-management-test.paas.newcapec.cn
     http:
       paths:
       - path: /
index 7f456ce..15168bb 100644 (file)
@@ -4,7 +4,7 @@
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-sa-installer-env
 data:
   DB_TYPE: mysql8
@@ -14,7 +14,7 @@ data:
 apiVersion: batch/v1
 kind: Job
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-sa-installer
 spec:
   completions: 1
index 1534603..9d8b3f1 100644 (file)
@@ -4,7 +4,7 @@
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-poa-env
 data:
   SERVER_PORT: "8080"
@@ -19,7 +19,7 @@ data:
   LOGGING_LEVEL_COM_SUPWISDOM_INSTITUTE_ADMIN_CENTER_POA: INFO
 
 
-  ADMIN_CENTER_SA_SERVER_URL: http://admin-center-sa-svc.admin-center.svc.cluster.local:8080
+  ADMIN_CENTER_SA_SERVER_URL: http://admin-center-sa-svc.admin-center-test.svc.cluster.local:8080
   ADMIN_CENTER_SA_CLIENT_AUTH_ENABLED: "false"
   #ADMIN_CENTER_SA_CLIENT_AUTH_KEY_PASSWORD: ""
   #ADMIN_CENTER_SA_CLIENT_AUTH_KEYSTORE_FILE: file:/certs/common/common.keystore
@@ -27,7 +27,7 @@ data:
   #ADMIN_CENTER_SA_CLIENT_AUTH_TRUSTSTORE_FILE: file:/certs/common/common.truststore
   #ADMIN_CENTER_SA_CLIENT_AUTH_TRUSTSTORE_PASSWORD: ""
 
-  USER_DATA_SERVICE_SERVER_URL: http://user-data-service-goa-svc.user-data-service.svc.cluster.local:8080
+  USER_DATA_SERVICE_SERVER_URL: http://user-data-service-goa-svc.user-data-service-test.svc.cluster.local:8080
   USER_DATA_SERVICE_CLIENT_AUTH_ENABLED: "false"
   #USER_DATA_SERVICE_CLIENT_AUTH_KEY_PASSWORD: ""
   #USER_DATA_SERVICE_CLIENT_AUTH_KEYSTORE_FILE: file:/certs/common/common.keystore
@@ -35,7 +35,7 @@ data:
   #USER_DATA_SERVICE_CLIENT_AUTH_TRUSTSTORE_FILE: file:/certs/common/common.truststore
   #USER_DATA_SERVICE_CLIENT_AUTH_TRUSTSTORE_PASSWORD: ""
 
-  USER_AUTHZ_SERVICE_SERVER_URL: http://user-authorization-sa-svc.user-authorization-service.svc.cluster.local:8080
+  USER_AUTHZ_SERVICE_SERVER_URL: http://user-authorization-sa-svc.user-authorization-service-test.svc.cluster.local:8080
   USER_AUTHZ_SERVICE_CLIENT_AUTH_ENABLED: "false"
   #USER_AUTHZ_SERVICE_CLIENT_AUTH_KEY_PASSWORD: ""
   #USER_AUTHZ_SERVICE_CLIENT_AUTH_KEYSTORE_FILE: file:/certs/common/common.keystore
@@ -48,7 +48,7 @@ data:
 apiVersion: v1
 kind: Service
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-poa-svc
   labels:
     app: admin-center-poa
@@ -70,7 +70,7 @@ spec:
 apiVersion: apps/v1
 kind: Deployment
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-poa
 spec:
   selector:
index d7c8aee..47e26a5 100644 (file)
@@ -4,7 +4,7 @@
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-sa-env
 data:
   SERVER_PORT: "8080"
@@ -18,7 +18,7 @@ data:
 apiVersion: v1
 kind: Secret
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-sa-env-secret
 type: Opaque
 data:
@@ -30,7 +30,7 @@ data:
 apiVersion: v1
 kind: Service
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-sa-svc
   labels:
     app: admin-center-sa
@@ -51,7 +51,7 @@ spec:
 apiVersion: apps/v1
 kind: Deployment
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-sa
 spec:
   selector:
index f03a397..0d72be9 100644 (file)
@@ -4,7 +4,7 @@
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-bff-env
 data:
   SERVER_PORT: "8080"
@@ -19,7 +19,7 @@ data:
   LOGGING_LEVEL_COM_SUPWISDOM_INSTITUTE_ADMIN_CENTER_BFF: INFO
 
 
-  ADMIN_CENTER_SA_SERVER_URL: http://admin-center-sa-svc.admin-center.svc.cluster.local:8080
+  ADMIN_CENTER_SA_SERVER_URL: http://admin-center-sa-svc.admin-center-test.svc.cluster.local:8080
   ADMIN_CENTER_SA_CLIENT_AUTH_ENABLED: "false"
   #ADMIN_CENTER_SA_CLIENT_AUTH_KEY_PASSWORD: ""
   #ADMIN_CENTER_SA_CLIENT_AUTH_KEYSTORE_FILE: file:/certs/common/common.keystore
@@ -27,7 +27,7 @@ data:
   #ADMIN_CENTER_SA_CLIENT_AUTH_TRUSTSTORE_FILE: file:/certs/common/common.truststore
   #ADMIN_CENTER_SA_CLIENT_AUTH_TRUSTSTORE_PASSWORD: ""
 
-  CASSERVER_SA_API_SERVER_URL: http://cas-server-sa-api-svc.cas-server.svc.cluster.local:8080
+  CASSERVER_SA_API_SERVER_URL: http://cas-server-sa-api-svc.cas-server-test.svc.cluster.local:8080
   CASSERVER_SA_API_CLIENT_AUTH_ENABLED: "false"
   #CASSERVER_SA_API_CLIENT_AUTH_KEY_PASSWORD: ""
   #CASSERVER_SA_API_CLIENT_AUTH_KEYSTORE_FILE: file:/certs/common/common.keystore
@@ -35,7 +35,7 @@ data:
   #CASSERVER_SA_API_CLIENT_AUTH_TRUSTSTORE_FILE: file:/certs/common/common.truststore
   #CASSERVER_SA_API_CLIENT_AUTH_TRUSTSTORE_PASSWORD: ""
 
-  USER_DATA_SERVICE_SERVER_URL: http://user-data-service-goa-svc.user-data-service.svc.cluster.local:8080
+  USER_DATA_SERVICE_SERVER_URL: http://user-data-service-goa-svc.user-data-service-test.svc.cluster.local:8080
   USER_DATA_SERVICE_CLIENT_AUTH_ENABLED: "false"
   #USER_DATA_SERVICE_CLIENT_AUTH_KEY_PASSWORD: ""
   #USER_DATA_SERVICE_CLIENT_AUTH_KEYSTORE_FILE: file:/certs/common/common.keystore
@@ -43,7 +43,7 @@ data:
   #USER_DATA_SERVICE_CLIENT_AUTH_TRUSTSTORE_FILE: file:/certs/common/common.truststore
   #USER_DATA_SERVICE_CLIENT_AUTH_TRUSTSTORE_PASSWORD: ""
 
-  USER_AUTHZ_SERVICE_SERVER_URL: http://user-authorization-sa-svc.user-authorization-service.svc.cluster.local:8080
+  USER_AUTHZ_SERVICE_SERVER_URL: http://user-authorization-sa-svc.user-authorization-service-test.svc.cluster.local:8080
   USER_AUTHZ_SERVICE_CLIENT_AUTH_ENABLED: "false"
   #USER_AUTHZ_SERVICE_CLIENT_AUTH_KEY_PASSWORD: ""
   #USER_AUTHZ_SERVICE_CLIENT_AUTH_KEYSTORE_FILE: file:/certs/common/common.keystore
@@ -60,7 +60,7 @@ data:
   #PERSONAL_SECURITY_CENTER_CLIENT_AUTH_TRUSTSTORE_PASSWORD: ""
 
 
-  TPAS_FILE_API_URL: http://agent-service-svc.thirdparty-agent-service.svc.cluster.local:8080/api/v1/tpas/file/db
+  TPAS_FILE_API_URL: http://agent-service-svc.thirdparty-agent-service-test.svc.cluster.local:8080/api/v1/tpas/file/db
   TPAS_CLIENT_AUTH_ENABLED: "false"
   #TPAS_CLIENT_AUTH_KEY_PASSWORD: ""
   #TPAS_CLIENT_AUTH_KEYSTORE_FILE: file:/certs/client/client.keystore
@@ -73,7 +73,7 @@ data:
 apiVersion: v1
 kind: Service
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-bff-svc
   labels:
     app: admin-center-bff
@@ -95,7 +95,7 @@ spec:
 apiVersion: apps/v1
 kind: Deployment
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-bff
 spec:
   selector:
index 71ed6d3..05336f6 100644 (file)
@@ -4,7 +4,7 @@
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-zuul-env
 data:
   SERVER_PORT: "8080"
@@ -40,16 +40,16 @@ data:
 
   INFRAS_SECURITY_JWT_TOKEN_GENERATE_TYPE: cas
   INFRAS_SECURITY_JWT_TOKEN_DECRYPT_KEY_PRIVATE_KEY_PEM_PKCS8: ""
-  INFRAS_SECURITY_JWT_TOKEN_SIGNING_KEY_URL: "http://cas-server-site-webapp-svc.cas-server.svc.cluster.local:8080/cas/jwt/publicKey"
+  INFRAS_SECURITY_JWT_TOKEN_SIGNING_KEY_URL: "http://cas-server-site-webapp-svc.cas-server-test.svc.cluster.local:8080/cas/jwt/publicKey"
 
 
   INFRAS_SECURITY_CAS_ENABLED: "true"
   # 修改为学校的admin-center的访问域名
-  APP_SERVER_HOST_URL: "http://admin-center.paas.xxx.edu.cn"
+  APP_SERVER_HOST_URL: "http://admin-center-test.paas.newcapec.cn"
   #APP_LOGIN_URL: "/cas/login"
   #APP_LOGOUT_URL: "/cas/logout"
   # 修改为学校的cas的访问域名
-  CAS_SERVER_HOST_URL: "http://cas.paas.xxx.edu.cn/cas"
+  CAS_SERVER_HOST_URL: "http://cas-test.paas.newcapec.cn/cas"
 
 
   ZUUL_HTTPCLIENT_CLIENT_AUTH_ENABLED: "false"
@@ -57,7 +57,7 @@ data:
   #ZUUL_HTTPCLIENT_CLIENT_AUTH_KEYSTORE_FILE: file:/certs/common/common.keystore
   #ZUUL_HTTPCLIENT_CLIENT_AUTH_KEYSTORE_PASSWORD: ""
 
-  ADMIN_CENTER_SA_SERVER_URL: http://admin-center-sa-svc.admin-center.svc.cluster.local:8080
+  ADMIN_CENTER_SA_SERVER_URL: http://admin-center-sa-svc.admin-center-test.svc.cluster.local:8080
   ADMIN_CENTER_SA_CLIENT_AUTH_ENABLED: "false"
   #ADMIN_CENTER_SA_CLIENT_AUTH_KEY_PASSWORD: ""
   #ADMIN_CENTER_SA_CLIENT_AUTH_KEYSTORE_FILE: file:/certs/common/common.keystore
@@ -65,7 +65,7 @@ data:
   #ADMIN_CENTER_SA_CLIENT_AUTH_TRUSTSTORE_FILE: file:/certs/common/common.truststore
   #ADMIN_CENTER_SA_CLIENT_AUTH_TRUSTSTORE_PASSWORD: ""
 
-  USER_DATA_SERVICE_SERVER_URL: http://user-data-service-goa-svc.user-data-service.svc.cluster.local:8080
+  USER_DATA_SERVICE_SERVER_URL: http://user-data-service-goa-svc.user-data-service-test.svc.cluster.local:8080
   USER_DATA_SERVICE_CLIENT_AUTH_ENABLED: "false"
   #USER_DATA_SERVICE_CLIENT_AUTH_KEY_PASSWORD: ""
   #USER_DATA_SERVICE_CLIENT_AUTH_KEYSTORE_FILE: file:/certs/common/common.keystore
@@ -73,7 +73,7 @@ data:
   #USER_DATA_SERVICE_CLIENT_AUTH_TRUSTSTORE_FILE: file:/certs/common/common.truststore
   #USER_DATA_SERVICE_CLIENT_AUTH_TRUSTSTORE_PASSWORD: ""
 
-  USER_AUTHZ_SERVICE_SERVER_URL: http://user-authorization-sa-svc.user-authorization-service.svc.cluster.local:8080
+  USER_AUTHZ_SERVICE_SERVER_URL: http://user-authorization-sa-svc.user-authorization-service-test.svc.cluster.local:8080
   USER_AUTHZ_SERVICE_CLIENT_AUTH_ENABLED: "false"
   #USER_AUTHZ_SERVICE_CLIENT_AUTH_KEY_PASSWORD: ""
   #USER_AUTHZ_SERVICE_CLIENT_AUTH_KEYSTORE_FILE: file:/certs/common/common.keystore
@@ -85,7 +85,7 @@ data:
 apiVersion: v1
 kind: Secret
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-zuul-env-secret
 type: Opaque
 data:
@@ -98,7 +98,7 @@ data:
 apiVersion: v1
 kind: Service
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-zuul-svc
   labels:
     app: admin-center-zuul
@@ -120,7 +120,7 @@ spec:
 apiVersion: apps/v1
 kind: Deployment
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-zuul
 spec:
   selector:
index 4684a8c..103e535 100644 (file)
@@ -4,23 +4,23 @@
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-management-env
 data:
   SCHOOL_NAME: "none"
   # 修改为学校的 admin-center 的访问域名
-  AUTH_URL: http://admin-center.paas.xxx.edu.cn/jwt/cas
+  AUTH_URL: http://admin-center-test.paas.newcapec.cn/jwt/cas
   # 修改为学校的 admin-center 的访问域名
-  BACKEND_URL: http://admin-center.paas.xxx.edu.cn
+  BACKEND_URL: http://admin-center-test.paas.newcapec.cn
   # 修改为学校的 admin-management 的访问域名
-  SERVER_URL: http://admin-management.paas.xxx.edu.cn
+  SERVER_URL: http://admin-management-test.paas.newcapec.cn
 
 
 ---
 apiVersion: v1
 kind: Service
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-management-svc
   labels:
     app: admin-center-management-svc
@@ -37,7 +37,7 @@ spec:
 apiVersion: apps/v1
 kind: Deployment
 metadata:
-  namespace: admin-center
+  namespace: admin-center-test
   name: admin-center-management
 spec:
   selector:
index 3777c8e..d052df2 100644 (file)
@@ -8,7 +8,7 @@
 apiVersion: v1
 kind: Namespace
 metadata:
-  name: admin-platform
+  name: admin-platform-test
   # labels:
   #   istio-injection: enabled
 
@@ -22,7 +22,7 @@ kind: Secret
 type: kubernetes.io/dockerconfigjson
 metadata:
   name: harbor-registry
-  namespace: admin-platform
+  namespace: admin-platform-test
 data:
   # 修改harbor仓库配置,并使用 base64 工具进行编码
   # {"auths":{"harbor.supwisdom.com":{"password":"PWMgP85qiLFC","username":"rancher.devops"}}}
index f8c644b..3b654a1 100644 (file)
@@ -5,11 +5,11 @@ apiVersion: extensions/v1beta1
 kind: Ingress
 metadata:
   name: admin-platform-ingress
-  namespace: admin-platform
+  namespace: admin-platform-test
 spec:
   rules:
   # 修改为学校的根域名
-  - host: admin-platform.paas.xxx.edu.cn
+  - host: admin-platform-test.paas.newcapec.cn
     http:
       paths:
       - path: /
index c0f91f4..c562567 100644 (file)
@@ -4,28 +4,28 @@
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  namespace: admin-platform
+  namespace: admin-platform-test
   name: admin-platform-env
 data:
   # 修改为学校的 admin-platform 的访问域名
-  LAYOUT_SPA_URL: http://admin-platform.paas.xxx.edu.cn/layout
-  CAS_SERVER_SPA_URL: http://admin-platform.paas.xxx.edu.cn/cas-server
-  USER_SERVER_SPA_URL: http://admin-platform.paas.xxx.edu.cn/user-server
-  AUTH_SERVER_SPA_URL: http://admin-platform.paas.xxx.edu.cn/auth-server
-  ACCOUNT_CENTER_SPA_URL: http://admin-platform.paas.xxx.edu.cn/account-center
-  FORM_FLOW_SPA_URL: http://admin-platform.paas.xxx.edu.cn/form-flow
+  LAYOUT_SPA_URL: http://admin-platform-test.paas.newcapec.cn/layout
+  CAS_SERVER_SPA_URL: http://admin-platform-test.paas.newcapec.cn/cas-server
+  USER_SERVER_SPA_URL: http://admin-platform-test.paas.newcapec.cn/user-server
+  AUTH_SERVER_SPA_URL: http://admin-platform-test.paas.newcapec.cn/auth-server
+  ACCOUNT_CENTER_SPA_URL: http://admin-platform-test.paas.newcapec.cn/account-center
+  FORM_FLOW_SPA_URL: http://admin-platform-test.paas.newcapec.cn/form-flow
 
   SCHOOL_NAME: "none"
-  MAIN_SERVER: http://admin-platform.paas.xxx.edu.cn
+  MAIN_SERVER: http://admin-platform-test.paas.newcapec.cn
 
   # 修改为学校的访问域名
-  SERVER_CONFIG: '{"ROOT": "http://admin-platform.paas.xxx.edu.cn/","AUTH": "http://admin-center.paas.xxx.edu.cn/jwt/cas","BASE_BACK_API": "http://admin-center.paas.xxx.edu.cn/","AUTH_PERSONAL": "http://admin-center.paas.xxx.edu.cn/jwt/cas","PERSONAL_CENTER_API": "http://admin-center.paas.xxx.edu.cn/","PERSONAL_CENTER": "http://admin-platform.paas.xxx.edu.cn/personal-center/","AUTH_FORMFLOW": "http://formflow.paas.xxx.edu.cn/release/cas/authen/redirect","FORM_DESIGN": "http://formflow.paas.xxx.edu.cn/form-design","FORM_DESIGN_PORTAL": "http://formflow.paas.xxx.edu.cn/form-design-portal","FORM_FILE": "http://formflow.paas.xxx.edu.cn/form-file","PERSONAL_CENTER_API_L": "http://portal.paas.xxx.edu.cn/portal-web/","PERSONAL_CENTER_IMAGE_API": "http://portal.paas.xxx.edu.cn/resources/",}'
+  SERVER_CONFIG: '{"ROOT": "http://admin-platform-test.paas.newcapec.cn/","AUTH": "http://admin-center-test.paas.newcapec.cn/jwt/cas","BASE_BACK_API": "http://admin-center-test.paas.newcapec.cn/","AUTH_PERSONAL": "http://admin-center-test.paas.newcapec.cn/jwt/cas","PERSONAL_CENTER_API": "http://admin-center-test.paas.newcapec.cn/","PERSONAL_CENTER": "http://admin-platform-test.paas.newcapec.cn/personal-center/","AUTH_FORMFLOW": "http://formflow-test.paas.newcapec.cn/release/cas/authen/redirect","FORM_DESIGN": "http://formflow-test.paas.newcapec.cn/form-design","FORM_DESIGN_PORTAL": "http://formflow-test.paas.newcapec.cn/form-design-portal","FORM_FILE": "http://formflow-test.paas.newcapec.cn/form-file","PERSONAL_CENTER_API_L": "http://portal-test.paas.newcapec.cn/portal-web/","PERSONAL_CENTER_IMAGE_API": "http://portal-test.paas.newcapec.cn/resources/",}'
 
 ---
 apiVersion: v1
 kind: Service
 metadata:
-  namespace: admin-platform
+  namespace: admin-platform-test
   name: admin-platform-svc
   labels:
     app: admin-platform-svc
@@ -42,7 +42,7 @@ spec:
 apiVersion: apps/v1
 kind: Deployment
 metadata:
-  namespace: admin-platform
+  namespace: admin-platform-test
   name: admin-platform
 spec:
   selector:
diff --git a/project/newcapec-test/poa-api-docs/admin-center-poa.v1.yaml b/project/newcapec-test/poa-api-docs/admin-center-poa.v1.yaml
new file mode 100644 (file)
index 0000000..ce291e1
--- /dev/null
@@ -0,0 +1,202 @@
+# admin-center-poa.v1.yaml
+#
+# 1. 创建服务
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services' -H 'Content-Type: application/json' -d '{"id": "admincenter", "origin": "http://admin-center-poa-svc.admin-center.svc.cluster.local:8080", "name": "管理中心", "description": "管理中心"}'
+#
+# 2. 创建版本
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services/admincenter/apiVersions/v1'
+#
+# 3. 上传OAS Yaml
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services/admincenter/apiVersions/v1/apiSpecs' -H 'Content-Type: application/yaml' --data-binary @admin-center-poa.v1.yaml
+#
+# 4. 发布版本
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services/admincenter/apiVersions/v1/publish'
+#
+openapi: 3.0.2
+info:
+  title: Admin Center Platform Open APIs
+  version: v1
+  description: '管理中心 - 平台开放接口'
+servers:
+  - url: 'http://poa-test.paas.newcapec.cn/apis/admincenter/v1'
+    description: '正式环境'
+tags:
+  - name: Menu
+    description: '管理中心菜单'
+paths:
+
+  '/menus/accountName/{accountName}/menus':
+    get:
+      summary: 获取用户帐号可访问的菜单
+      description: 获取用户帐号可访问的菜单
+      operationId: loadAccountMenus
+      tags:
+        - Menu
+      security:
+        - oauth2:
+          - "admincenter:v1:readMenu"
+      parameters:
+        - name: accountName
+          in: path
+          required: true
+          description: 用户名
+          schema:
+            type: string
+        # - name: applicationId
+        #   in: query
+        #   required: true
+        #   description: 应用标识
+        #   schema:
+        #     type: string
+      responses:
+        '200':
+          description: 菜单列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GrantedMenusResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+
+components:
+
+  # Security Schemes
+  
+  securitySchemes:
+    oauth2:
+      type: oauth2
+      flows:
+        clientCredentials:
+          tokenUrl: http://poa-test.paas.newcapec.cn/oauth2/token
+          scopes:
+            "admincenter:v1:readMenu": "读取后台菜单"
+
+  responses:
+    'ErrorResponse400':
+      description: unexpected error
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ErrorResponse'
+
+    DefaultErrorResponse:
+      description: unexpected error
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ErrorResponse'
+
+  schemas:
+  
+    # Error
+    
+    ErrorResponse:
+      title: '异常响应'
+      required:
+        - code
+        - message
+      properties:
+        code:
+          title: 异常代码
+          type: integer
+          format: int32
+          default: -1
+        message:
+          title: 异常信息
+          type: string
+          default: "未知错误"
+
+    # DTO
+
+    GrantedMenu:
+      title: DTO - 菜单数据
+      type: object
+      properties:
+        id:
+          title: ID
+          type: string
+        code:
+          title: 代码
+          type: string
+        name:
+          title: 名称
+          type: string
+        memo:
+          title: 备注
+          type: string
+        status:
+          title: 状态(1 启用,0 停用)
+          type: string
+        icon:
+          title: 菜单图标
+          type: string
+        origin:
+          title: 来源系统
+          type: string
+        url:
+          title: URL地址
+          type: string
+        applicationId:
+          title: 系统ID
+          type: string
+        parentId:
+          title: 父级ID
+          type: string
+        order:
+          title: 排序
+          type: string
+
+
+    # Request VO
+
+
+    # Response Data
+
+    GrantedMenusResponseData:
+      title: 响应数据 - 菜单列表
+      type: object
+      properties:
+        menus:
+          title: 菜单列表
+          type: array
+          items:
+            $ref: '#/components/schemas/GrantedMenu'
+
+
+    # Response VO
+
+    ApiDataResponse:
+      title: 响应
+      properties:
+        code:
+          title: 响应代码
+          type: integer
+          format: int32
+          default: 0
+        message:
+          title: 响应信息
+          type: string
+        data:
+          title: 响应数据
+          type: object
+
+    DefaultApiDataResponse:
+      allOf:
+        - $ref: '#/components/schemas/ApiDataResponse'
+        - type: object
+          title: 响应
+          properties:
+            data:
+              title: 响应数据
+              type: object
+
+    GrantedMenusResponse:
+      allOf:
+        - $ref: '#/components/schemas/DefaultApiDataResponse'
+        - type: object
+          title: 响应
+          properties:
+            data:
+              allOf:
+                - $ref: '#/components/schemas/GrantedMenusResponseData'
diff --git a/project/newcapec-test/poa-api-docs/communicate-center-poa.v1.yaml b/project/newcapec-test/poa-api-docs/communicate-center-poa.v1.yaml
new file mode 100644 (file)
index 0000000..4f925d5
--- /dev/null
@@ -0,0 +1,304 @@
+# communicate-center-poa.v1.yaml
+#
+# 1. 创建服务
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services' -H 'Content-Type: application/json' -d '{"id": "communicate", "origin": "http://communicate-center-poa-svc.communicate-center.svc.cluster.local:8080", "name": "通信服务", "description": "通信服务"}'
+#
+# 2. 创建版本
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services/communicate/apiVersions/v1'
+#
+# 3. 上传OAS Yaml
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services/communicate/apiVersions/v1/apiSpecs' -H 'Content-Type: application/yaml' --data-binary @communicate-center-poa.v1.yaml
+#
+# 4. 发布版本
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services/communicate/apiVersions/v1/publish'
+#
+openapi: 3.0.2
+info:
+  title: Communicate Center Platform Open APIs
+  version: v1
+  description: '通信服务 - 平台开放接口'
+servers:
+  - url: 'http://poa-test.paas.newcapec.cn/apis/communicate/v1'
+    description: '正式环境'
+tags:
+  - name: Communication
+    description: '通信'
+paths:
+
+  '/communications/{communicationLogId}/sendStatus':
+    get:
+      summary: 检查发送状态
+      description: 检查发送状态
+      operationId: checkSendStatus
+      tags:
+        - Communication
+      security:
+        - oauth2:
+          - "communicate:v1:communicationCheck"
+      parameters:
+        - name: communicationLogId
+          in: path
+          required: true
+          description: 通信记录ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 发送状态
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CommunicationSendResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/communications/sendMail':
+    post:
+      summary: 发送邮件
+      description: 发送邮件
+      operationId: sendMail
+      tags:
+        - Communication
+      security:
+        - oauth2:
+          - "communicate:v1:communicationSend"
+      requestBody:
+        description: 发送请求数据
+        required: true
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CommunicationSendRequest'
+      responses:
+        '200':
+          description: 发送状态
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CommunicationSendResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+
+  '/communications/sendSms':
+    post:
+      summary: 发送短信
+      description: 发送短信
+      operationId: sendSms
+      tags:
+        - Communication
+      security:
+        - oauth2:
+          - "communicate:v1:communicationSend"
+      requestBody:
+        description: 发送请求数据
+        required: true
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CommunicationSendRequest'
+      responses:
+        '200':
+          description: 发送状态
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CommunicationSendResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+
+
+
+
+components:
+
+  # Security Schemes
+  
+  securitySchemes:
+    oauth2:
+      type: oauth2
+      flows:
+        clientCredentials:
+          tokenUrl: http://poa-test.paas.newcapec.cn/oauth2/token
+          scopes:
+            "communicate:v1:communicationCheck": "检查"
+            "communicate:v1:communicationSend": "发送"
+
+
+  responses:
+    'ErrorResponse400':
+      description: unexpected error
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ApiErrorResponse'
+
+    DefaultErrorResponse:
+      description: unexpected error
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ApiErrorResponse'
+
+  schemas:
+  
+    # Error
+    
+    ApiErrorResponse:
+      title: '异常响应'
+      required:
+        - code
+        - message
+      properties:
+        code:
+          title: 异常代码
+          type: integer
+          format: int32
+          default: -1
+        message:
+          title: 异常信息
+          type: string
+          default: "未知错误"
+
+    # Entity
+    
+    BaseEntity:
+      title: 实体 - 基类
+      type: object
+      properties:
+        id:
+          title: ID
+          type: string
+        #companyId:
+        #  title: 'Company ID, 固定 1'
+        #  type: string
+        #  default: '1'
+        #deleted:
+        #  title: 是否删除
+        #  type: boolean
+        #  default: false
+        #addAccount:
+        #  title: 创建人
+        #  type: string
+        #addTime:
+        #  title: 创建时间
+        #  type: string
+        #  format: date-time
+        #editAccount:
+        #  title: 修改人
+        #  type: string
+        #editTime:
+        #  title: 修改时间
+        #  type: string
+        #  format: date-time
+        #deleteAccount:
+        #  title: 删除人
+        #  type: string
+        #deleteTime:
+        #  title: 删除时间
+        #  type: string
+        #  format: date-time
+
+
+    # DTO
+    Communication: 
+      title: DTO - 通信数据
+      type: object
+      properties:
+        from:
+          title: 来源
+          type: string
+        to:
+          title: 接收帐号
+          type: string
+        payload:
+          title: 数据载荷
+          allOf:
+            - $ref: '#/components/schemas/CommunicationPayload'
+
+    CommunicationPayload:
+      title: DTO - 通信数据载荷
+      type: object
+      properties:
+        subject:
+          title: 主题
+          type: string
+        template:
+          title: 模板
+          type: string
+        data:
+          title: 数据(Map<String, String>)
+          type: object
+          additionalProperties:
+            type: string
+
+          # type: array
+          # items: 
+          #   title: 数据项
+          #   type: object
+          #   properties:
+          #     key:
+          #       title: 键
+          #       type: string
+          #     value: 
+          #       title: 值
+          #       type: string
+
+
+    # Request VO
+    CommunicationSendRequest:
+      title: 请求数据 - 发送请求
+      allOf:
+        - $ref: '#/components/schemas/Communication'
+
+
+    # Response Data
+    CommunicationSendResponseData:
+      title: 响应数据 - 发送响应
+      type: object
+      properties:
+        sendStatus:
+          title: 发送状态
+          type: string
+        sendResult:
+          title: 发送结果
+          type: string
+
+
+    # Response VO
+
+    ApiDataResponse:
+      title: 响应
+      properties:
+        code:
+          title: 响应代码
+          type: integer
+          format: int32
+          default: 0
+        message:
+          title: 响应信息
+          type: string
+        data:
+          title: 响应数据
+          type: object
+
+    DefaultApiDataResponse:
+      allOf:
+        - $ref: '#/components/schemas/ApiDataResponse'
+        - type: object
+          title: 响应
+          properties:
+            data:
+              title: 响应数据
+              type: object
+
+    CommunicationSendResponse:
+      allOf:
+        - $ref: '#/components/schemas/DefaultApiDataResponse'
+        - type: object
+          title: 响应
+          properties:
+            data:
+              allOf:
+                - $ref: '#/components/schemas/CommunicationSendResponseData'
diff --git a/project/newcapec-test/poa-api-docs/exec.sh b/project/newcapec-test/poa-api-docs/exec.sh
new file mode 100755 (executable)
index 0000000..f4014aa
--- /dev/null
@@ -0,0 +1,67 @@
+
+# user-data-service-poa.v1.yaml
+
+curl -i -s -X DELETE 'http://poa-sa-test.paas.newcapec.cn/v1/services/user'
+
+# 1. 创建服务
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services' -H 'Content-Type: application/json' -d '{"id": "user", "origin": "http://user-data-service-poa-svc.user-data-service-test.svc.cluster.local:8080", "name": "用户服务", "description": "用户服务"}'
+
+# 2. 创建版本
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services/user/apiVersions/v1'
+
+# 3. 上传OAS Yaml
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services/user/apiVersions/v1/apiSpecs' -H 'Content-Type: application/yaml' --data-binary @user-data-service-poa.v1.yaml
+
+# 4. 发布版本
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services/user/apiVersions/v1/publish'
+
+
+# user-authorization-service-poa.v1.yaml
+
+curl -i -s -X DELETE 'http://poa-sa-test.paas.newcapec.cn/v1/services/authz'
+
+# 1. 创建服务
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services' -H 'Content-Type: application/json' -d '{"id": "authz", "origin": "http://user-authorization-poa-svc.user-authorization-service-test.svc.cluster.local:8080", "name": "授权服务", "description": "授权服务"}'
+
+# 2. 创建版本
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services/authz/apiVersions/v1'
+
+# 3. 上传OAS Yaml
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services/authz/apiVersions/v1/apiSpecs' -H 'Content-Type: application/yaml' --data-binary @user-authorization-service-poa.v1.yaml
+
+# 4. 发布版本
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services/authz/apiVersions/v1/publish'
+
+
+# admin-center-poa.v1.yaml
+
+curl -i -s -X DELETE 'http://poa-sa-test.paas.newcapec.cn/v1/services/admincenter'
+
+# 1. 创建服务
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services' -H 'Content-Type: application/json' -d '{"id": "admincenter", "origin": "http://admin-center-poa-svc.admin-center-test.svc.cluster.local:8080", "name": "管理中心", "description": "管理中心"}'
+
+# 2. 创建版本
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services/admincenter/apiVersions/v1'
+
+# 3. 上传OAS Yaml
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services/admincenter/apiVersions/v1/apiSpecs' -H 'Content-Type: application/yaml' --data-binary @admin-center-poa.v1.yaml
+
+# 4. 发布版本
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services/admincenter/apiVersions/v1/publish'
+
+
+# communicate-center-poa.v1.yaml
+
+curl -i -s -X DELETE 'http://poa-sa-test.paas.newcapec.cn/v1/services/communicate'
+
+# 1. 创建服务
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services' -H 'Content-Type: application/json' -d '{"id": "communicate", "origin": "http://communicate-center-poa-svc.communicate-center-test.svc.cluster.local:8080", "name": "通信服务", "description": "通信服务"}'
+
+# 2. 创建版本
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services/communicate/apiVersions/v1'
+
+# 3. 上传OAS Yaml
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services/communicate/apiVersions/v1/apiSpecs' -H 'Content-Type: application/yaml' --data-binary @communicate-center-poa.v1.yaml
+
+# 4. 发布版本
+curl -i -s -X POST 'http://poa-sa-test.paas.newcapec.cn/v1/services/communicate/apiVersions/v1/publish'
diff --git a/project/newcapec-test/poa-api-docs/user-authorization-service-poa.v1.yaml b/project/newcapec-test/poa-api-docs/user-authorization-service-poa.v1.yaml
new file mode 100644 (file)
index 0000000..7215152
--- /dev/null
@@ -0,0 +1,459 @@
+# user-authorization-service-poa.v1.yaml
+#
+# 1. 创建服务
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services' -H 'Content-Type: application/json' -d '{"id": "authz", "origin": "http://user-authorization-poa-svc.user-authorization-service.svc.cluster.local:8080", "name": "授权服务", "description": "授权服务"}'
+#
+# 2. 创建版本
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services/authz/apiVersions/v1'
+#
+# 3. 上传OAS Yaml
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services/authz/apiVersions/v1/apiSpecs' -H 'Content-Type: application/yaml' --data-binary @user-authorization-service-poa.v1.yaml
+#
+# 4. 发布版本
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services/authz/apiVersions/v1/publish'
+#
+openapi: 3.0.2
+info:
+  title: User Authorization Service Platform Open APIs
+  version: v1
+  description: '用户授权服务 - 平台开放接口'
+servers:
+  - url: 'http://poa-test.paas.newcapec.cn/apis/authz/v1'
+    description: '演示环境'
+tags:
+  - name: Role
+    description: '角色'
+paths:
+
+  '/application/{applicationId}/roles':
+    get:
+      summary: 获取应用下的角色列表
+      description: 获取应用下的角色列表
+      operationId: loadApplicationRoles
+      tags:
+        - Role
+      security:
+        - oauth2:
+          - "authz:v1:readRole"
+      parameters:
+        - name: applicationId
+          in: path
+          required: true
+          description: 应用标识
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 角色列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ApplicationRolesResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+
+  '/application/{applicationId}/role/{rolecode}/accounts':
+    get:
+      summary: 获取应用下的一个角色的用户帐号
+      description: 获取应用下的一个角色的用户帐号
+      operationId: loadApplicationRoleAccounts
+      tags:
+        - Role
+      security:
+        - oauth2:
+          - "authz:v1:readRole"
+      parameters:
+        - name: applicationId
+          in: path
+          required: true
+          description: 应用标识
+          schema:
+            type: string
+        - name: rolecode
+          in: path
+          required: true
+          description: 角色代码
+          schema:
+            type: string
+        - name: loadAll
+          in: query
+          required: false
+          description: 分页-是否返回所有(当为 true 时,不分页,参数 pageIndex、pageSize 无效)
+          schema:
+            type: boolean
+            default: false
+        - name: pageIndex
+          in: query
+          required: false
+          description: 分页-页码
+          schema:
+            type: integer
+            format: int32
+            default: 0
+        - name: pageSize
+          in: query
+          required: false
+          description: 分页-每页记录数
+          schema:
+            type: integer
+            format: int32
+            default: 1000
+      responses:
+        '200':
+          description: 用户的帐号ID
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ApplicationRoleAccountsResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/application/{applicationId}/account/{username}/roles':
+    get:
+      summary: 获取用户帐号在某一应用下所拥有的角色
+      description: 获取用户帐号在某一应用下所拥有的角色
+      operationId: loadAccountApplicationRoles
+      tags:
+        - Role
+      security:
+        - oauth2:
+          - "authz:v1:readRole"
+      parameters:
+        - name: applicationId
+          in: path
+          required: true
+          description: 应用标识
+          schema:
+            type: string
+        - name: username
+          in: path
+          required: true
+          description: 用户名
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 角色列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/AccountApplicationRolesResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/application/{applicationId}/roles/accounts':
+    post:
+      summary: 获取应用下的多个角色的用户帐号
+      description: 获取应用下的多个角色的用户帐号
+      operationId: loadAccountsByApplicationRole
+      tags:
+        - Role
+      security:
+        - oauth2:
+          - "authz:v1:readRole"
+      parameters:
+        - name: applicationId
+          in: path
+          required: true
+          description: 应用标识
+          schema:
+            type: string
+        - name: loadAll
+          in: query
+          required: false
+          description: 分页-是否返回所有(当为 true 时,不分页,参数 pageIndex、pageSize 无效)
+          schema:
+            type: boolean
+            default: false
+        - name: pageIndex
+          in: query
+          required: false
+          description: 分页-页码
+          schema:
+            type: integer
+            format: int32
+            default: 0
+        - name: pageSize
+          in: query
+          required: false
+          description: 分页-每页记录数
+          schema:
+            type: integer
+            format: int32
+            default: 1000
+      requestBody:
+        description: 角色IDs
+        required: true
+        content:
+          application/json:
+            schema:
+              type: array
+              items: 
+                title: 角色ID
+                type: string
+      responses:
+        '200':
+          description: 用户的帐号ID
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ApplicationRolesAccountsResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+components:
+
+  # Security Schemes
+  
+  securitySchemes:
+    oauth2:
+      type: oauth2
+      flows:
+        clientCredentials:
+          tokenUrl: http://poa-test.paas.newcapec.cn/oauth2/token
+          scopes:
+            "authz:v1:readRole": "读取角色"
+
+  responses:
+    'ErrorResponse400':
+      description: unexpected error
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ErrorResponse'
+
+    DefaultErrorResponse:
+      description: unexpected error
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ErrorResponse'
+
+  schemas:
+  
+    # Error
+    
+    ErrorResponse:
+      title: '异常响应'
+      required:
+        - code
+        - message
+      properties:
+        code:
+          title: 异常代码
+          type: integer
+          format: int32
+          default: -1
+        message:
+          title: 异常信息
+          type: string
+          default: "未知错误"
+
+    # Entity
+    
+    BaseEntity:
+      title: 实体 - 基类
+      type: object
+      properties:
+        id:
+          title: ID
+          type: string
+        #companyId:
+        #  title: 'Company ID, 固定 1'
+        #  type: string
+        #  default: '1'
+        #deleted:
+        #  title: 是否删除
+        #  type: boolean
+        #  default: false
+        #addAccount:
+        #  title: 创建人
+        #  type: string
+        #addTime:
+        #  title: 创建时间
+        #  type: string
+        #  format: date-time
+        #editAccount:
+        #  title: 修改人
+        #  type: string
+        #editTime:
+        #  title: 修改时间
+        #  type: string
+        #  format: date-time
+        #deleteAccount:
+        #  title: 删除人
+        #  type: string
+        #deleteTime:
+        #  title: 删除时间
+        #  type: string
+        #  format: date-time
+
+    User:
+      title: 实体 - 用户
+      allOf:
+        - $ref: '#/components/schemas/BaseEntity'
+        - type: object
+          title: 实体属性
+          properties:
+            username:
+              title: 代码
+              type: string
+            name:
+              title: 姓名
+              type: string
+
+    Role:
+      title: 实体 - 角色
+      allOf:
+        - $ref: '#/components/schemas/BaseEntity'
+        - type: object
+          title: 实体属性
+          properties:
+            code:
+              title: 代码
+              type: string
+            name:
+              title: 名称
+              type: string
+            description:
+              title: 描述
+              type: string
+            enabled:
+              title: 是否可用
+              type: boolean
+            externalId:
+              title: 扩展ID
+              type: string
+
+    # Request VO
+
+
+    # Response Data
+
+
+    # Response VO
+
+    AbstractApiResponse:
+      title: 响应
+      properties:
+        acknowleged:
+          title: 响应结果(废弃,请使用code)
+          type: boolean
+          default: true
+        code:
+          title: 响应代码
+          type: integer
+          format: int32
+          default: 0
+        message:
+          title: 响应信息
+          type: string
+    DefaultApiResponse:
+      allOf:
+        - $ref: '#/components/schemas/AbstractApiResponse'
+        - type: object
+          title: 响应数据
+          properties:
+            data:
+              title: 响应数据
+              type: object
+
+
+
+    ApplicationRolesResponse:
+      allOf:
+        - $ref: '#/components/schemas/DefaultApiResponse'
+        - type: object
+          title: 响应数据
+          properties:
+            data:
+              allOf:
+              - type: object
+                title: 数据
+                properties:
+                  applicationId:
+                    title: 应用标识
+                    type: string
+                  roles:
+                    title: 角色数据
+                    type: array
+                    items:
+                      $ref: '#/components/schemas/Role'
+
+
+    ApplicationRoleAccountsResponse:
+      allOf:
+        - $ref: '#/components/schemas/DefaultApiResponse'
+        - type: object
+          title: 响应数据
+          properties:
+            data:
+              allOf:
+              - type: object
+                title: 数据
+                properties:
+                  applicationId:
+                    title: 应用标识
+                    type: string
+                  rolecode:
+                    title: 角色代码
+                    type: string
+                  accounts:
+                    title: 用户帐号数据
+                    type: array
+                    items:
+                      title: 用户的帐号ID
+                      type: string
+
+
+    AccountApplicationRolesResponse:
+      allOf:
+        - $ref: '#/components/schemas/DefaultApiResponse'
+        - type: object
+          title: 响应数据
+          properties:
+            data:
+              allOf:
+              - type: object
+                title: 数据
+                properties:
+                  username:
+                    title: 用户名
+                    type: string
+                  applicationId:
+                    title: 应用标识
+                    type: string
+                  roles:
+                    title: 角色数据
+                    type: array
+                    items:
+                      $ref: '#/components/schemas/Role'
+
+
+    ApplicationRolesAccountsResponse:
+      allOf:
+        - $ref: '#/components/schemas/DefaultApiResponse'
+        - type: object
+          title: 响应数据
+          properties:
+            data:
+              allOf:
+              - type: object
+                title: 数据
+                properties:
+                  applicationId:
+                    title: 应用标识
+                    type: string
+                  roleIds:
+                    title: 角色IDs
+                    type: array
+                    items:
+                      title: 角色ID
+                      type: string
+                  accounts:
+                    title: 用户帐号数据
+                    type: array
+                    items:
+                      title: 用户的帐号ID
+                      type: string
diff --git a/project/newcapec-test/poa-api-docs/user-data-service-poa.v1.yaml b/project/newcapec-test/poa-api-docs/user-data-service-poa.v1.yaml
new file mode 100644 (file)
index 0000000..7ac451c
--- /dev/null
@@ -0,0 +1,3013 @@
+# user-data-service-poa.v1.yaml
+#
+# 1. 创建服务
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services' -H 'Content-Type: application/json' -d '{"id": "user", "origin": "http://user-data-service-poa-svc.user-data-service.svc.cluster.local:8080", "name": "用户服务", "description": "用户服务"}'
+#
+# 2. 创建版本
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services/user/apiVersions/v1'
+#
+# 3. 上传OAS Yaml
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services/user/apiVersions/v1/apiSpecs' -H 'Content-Type: application/yaml' --data-binary @user-data-service-poa.v1.yaml
+#
+# 4. 发布版本
+# curl -i -s -X POST 'https://poa-sa.dev.supwisdom.com/v1/services/user/apiVersions/v1/publish'
+#
+openapi: 3.0.2
+info:
+  title: User Data Service Platform Open APIs
+  version: v1
+  description: '用户服务 - 平台开放接口'
+servers:
+  - url: 'http://poa-test.paas.newcapec.cn/apis/user/v1'
+    description: '正式环境'
+tags:
+  - name: User
+    description: '用户'
+  - name: UserBatchQuery
+    description: '用户批量查询'
+  - name: Organization
+    description: '组织机构'
+  - name: Group
+    description: '用户组'
+  - name: Label
+    description: '用户标签'
+  - name: PostAdmin
+    description: '用户组(岗位)管理'
+
+paths:
+
+  '/users':
+    get:
+      summary: 获取用户列表
+      operationId: pageUsers
+      tags:
+        - User
+      security:
+        - oauth2:
+          - "user:v1:readUser"
+      parameters:
+        - name: pageIndex
+          in: query
+          required: true
+          description: 分页-页码
+          schema:
+            type: integer
+            format: int32
+            default: 0
+        - name: pageSize
+          in: query
+          required: true
+          description: 分页-每页记录数
+          schema:
+            type: integer
+            format: int32
+            default: 20
+        - name: mapBean
+          in: query
+          required: false
+          description: 查询条件
+          style: deepObject
+          explode: true
+          schema:
+            type: object
+            properties:
+              keyword:
+                title: 查询条件 - 关键字(模糊,帐号、姓名等)
+                type: string
+              accountName:
+                title: 查询条件 - 账户名(模糊)
+                type: string
+              name:
+                title: 查询条件 - 姓名(模糊)
+                type: string
+              ids:
+                title: 查询条件 - ids(精确匹配,多个用逗号隔开)
+                type: string
+              accountNames:
+                title: 查询条件 - 账户名s(精确匹配,多个用逗号隔开)
+                type: string
+      responses:
+        '200':
+          description: 用户分页列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserInfoPageResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/users/{accountId}':
+    get:
+      summary: 根据帐号ID获取用户信息
+      operationId: loadUserInfoByAccountId
+      tags:
+        - User
+      security:
+        - oauth2:
+          - "user:v1:readUser"
+      parameters:
+        - name: accountId
+          in: path
+          required: true
+          description: 帐号ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 用户信息
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserInfoLoadResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/users/accountName/{accountName}':
+    get:
+      summary: 根据帐号获取用户信息
+      operationId: loadUserInfoByAccountName
+      tags:
+        - User
+      security:
+        - oauth2:
+          - "user:v1:readUser"
+      parameters:
+        - name: accountName
+          in: path
+          required: true
+          description: 用户名
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 用户信息
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserInfoLoadResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+
+  '/users/phoneNumber/{phoneNumber}':
+    get:
+      summary: 根据手机号(安全手机)获取用户列表
+      operationId: listUsersByPhoneNumber
+      tags:
+        - User
+      security:
+        - oauth2:
+          - "user:v1:readUser"
+      parameters:
+        - name: phoneNumber
+          in: path
+          required: true
+          description: 手机号(安全手机)
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 用户列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserInfoListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/users/email/{email}':
+    get:
+      summary: 根据邮件地址(安全邮箱)获取用户列表
+      operationId: listUsersByEmail
+      tags:
+        - User
+      security:
+        - oauth2:
+          - "user:v1:readUser"
+      parameters:
+        - name: email
+          in: path
+          required: true
+          description: 邮件地址(安全邮箱)
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 用户列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserInfoListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/users/{accountId}/portrait':
+    get:
+      summary: 根据帐号ID获取用户头像
+      operationId: loadUserPortraitByAccountId
+      tags:
+        - User
+      security:
+        - oauth2:
+          - "user:v1:readUser"
+      parameters:
+        - name: accountId
+          in: path
+          required: true
+          description: 帐号ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 用户头像
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserPortraitLoadResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/users/accountName/{accountName}/portrait':
+    get:
+      summary: 根据帐号获取用户头像
+      operationId: loadUserPortraitByAccountName
+      tags:
+        - User
+      security:
+        - oauth2:
+          - "user:v1:readUser"
+      parameters:
+        - name: accountName
+          in: path
+          required: true
+          description: 帐号
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 用户头像
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserPortraitLoadResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/users/{accountId}/safety':
+    get:
+      summary: 根据帐号ID获取用户的安全信息
+      operationId: loadUserSafetyByAccountId
+      tags:
+        - User
+      security:
+        - oauth2:
+          - "user:v1:readUserSecret"
+      parameters:
+        - name: accountId
+          in: path
+          required: true
+          description: 帐号ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 安全信息
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserSafetyLoadResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/users/accountName/{accountName}/safety':
+    get:
+      summary: 根据帐号获取用户的安全信息
+      operationId: loadUserSafetyByAccountName
+      tags:
+        - User
+      security:
+        - oauth2:
+          - "user:v1:readUserSecret"
+      parameters:
+        - name: accountName
+          in: path
+          required: true
+          description: 帐号
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 安全信息
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserSafetyLoadResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/users/{accountId}/federation/{federatedType}':
+    get:
+      summary: 根据帐号ID获取用户的联合登录信息
+      operationId: loadUserFederationByAccountId
+      tags:
+        - User
+      security:
+        - oauth2:
+          - "user:v1:readUserSecret"
+      parameters:
+        - name: accountId
+          in: path
+          required: true
+          description: 帐号ID
+          schema:
+            type: string
+        - name: federatedType
+          in: path
+          required: true
+          description: 联合登录类型(qq, openweixin, workweixin, alipay, dingtalk)
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 联合登录信息
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserFederationLoadResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/users/accountName/{accountName}/federation/{federatedType}':
+    get:
+      summary: 根据帐号获取用户的联合登录信息
+      operationId: loadUserFederationByAccountName
+      tags:
+        - User
+      security:
+        - oauth2:
+          - "user:v1:readUserSecret"
+      parameters:
+        - name: accountName
+          in: path
+          required: true
+          description: 帐号
+          schema:
+            type: string
+        - name: federatedType
+          in: path
+          required: true
+          description: 联合登录类型(qq, openweixin, workweixin, alipay, dingtalk)
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 联合登录信息
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserFederationLoadResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+
+  '/users/batchQuery':
+    post:
+      summary: 批量获取用户列表
+      operationId: batchQueryUsers
+      description: |-
+        查询条件accountIds, accountNames, phoneNumbers, emails之间的是或关系。
+        如果你同时制定了accountIds和phoneNumbers,那么会分别按照这两个查询条件
+        查询出用户列表,然后合并返回给你。
+        同时,这些查询条件的数组长度最多1000个
+      tags:
+        - UserBatchQuery
+      security:
+        - oauth2:
+          - "user:v1:readUser"
+      requestBody:
+        description: 查询条件
+        required: true
+        content:
+          'application/json':
+            schema:
+              type: object
+              properties:
+                accountIds:
+                  title: 账号Id(复数)
+                  type: array
+                  items:
+                    title: 账号Id
+                    type: string
+                  maxItems: 1000
+                accountNames:
+                  title: 账户名(复数)
+                  type: array
+                  items:
+                    title: 账户名
+                    type: string
+                  maxItems: 1000
+                securePhoneNumbers:
+                  title: 安全手机(复数)
+                  type: array
+                  items:
+                    title: 安全手机
+                    type: string
+                  maxItems: 1000
+                secureEmails:
+                  title: 安全邮箱(复数)
+                  type: array
+                  items:
+                    title: 安全邮箱
+                    type: string
+                  maxItems: 1000
+      responses:
+        '200':
+          description: 用户列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserInfoListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/users/safety/phoneNumber/batchQuery':
+    post:
+      summary: 批量查询用户的安全手机
+      operationId: batchQueryUserSafetyPhoneNumber
+      description: |-
+        查询条件accountIds, accountNames之间的是或关系。
+        如果你同时制定了accountIds和accountNames,那么会分别按照这两个查询条件
+        查询出用户列表,然后合并返回给你。
+        同时,这些查询条件的数组长度最多1000个
+      tags:
+        - UserBatchQuery
+      security:
+        - oauth2:
+          - "user:v1:readUserSecret"
+      requestBody:
+        description: 查询条件
+        required: true
+        content:
+          'application/json':
+            schema:
+              type: object
+              properties:
+                accountIds:
+                  title: 账号Id(复数)
+                  type: array
+                  items:
+                    title: 账号Id
+                    type: string
+                  maxItems: 1000
+                accountNames:
+                  title: 账户名(复数)
+                  type: array
+                  items:
+                    title: 账户名
+                    type: string
+                  maxItems: 1000
+      responses:
+        '200':
+          description: 用户安全信息列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserSafetyPhoneNumberList'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/users/safety/email/batchQuery':
+    post:
+      summary: 批量查询用户的安全邮箱
+      operationId: batchQueryUserSafetyEmail
+      description: |-
+        查询条件accountIds, accountNames之间的是或关系。
+        如果你同时制定了accountIds和accountNames,那么会分别按照这两个查询条件
+        查询出用户列表,然后合并返回给你。
+        同时,这些查询条件的数组长度最多1000个
+      tags:
+        - UserBatchQuery
+      security:
+        - oauth2:
+          - "user:v1:readUserSecret"
+      requestBody:
+        description: 查询条件
+        required: true
+        content:
+          'application/json':
+            schema:
+              type: object
+              properties:
+                accountIds:
+                  title: 账号Id(复数)
+                  type: array
+                  items:
+                    title: 账号Id
+                    type: string
+                  maxItems: 1000
+                accountNames:
+                  title: 账户名(复数)
+                  type: array
+                  items:
+                    title: 账户名
+                    type: string
+                  maxItems: 1000
+      responses:
+        '200':
+          description: 用户安全信息列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserSafetyEmailList'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/users/federation/{federatedType}/batchQuery':
+    post:
+      summary: 批量查询用户的联合登录信息
+      operationId: batchQueryUserFederation
+      description: |-
+        查询条件accountIds, accountNames之间的是或关系。
+        如果你同时制定了accountIds和accountNames,那么会分别按照这两个查询条件
+        查询出用户列表,然后合并返回给你。
+        同时,这些查询条件的数组长度最多1000个
+      tags:
+        - UserBatchQuery
+      security:
+        - oauth2:
+          - "user:v1:readUserSecret"
+      parameters: 
+        - name: federatedType
+          description: 联合登录类型
+          in: path
+          required: true
+          schema:
+            type: string
+            enum:
+            - qq
+            - openweixin
+            - workweixin
+            - alipay
+            - dingtalk
+      requestBody:
+        description: 查询条件
+        required: true
+        content:
+          'application/json':
+            schema:
+              type: object
+              properties:
+                accountIds:
+                  title: 账号Id(复数)
+                  type: array
+                  items:
+                    title: 账号Id
+                    type: string
+                  maxItems: 1000
+                accountNames:
+                  title: 账户名(复数)
+                  type: array
+                  items:
+                    title: 账户名
+                    type: string
+                  maxItems: 1000
+      responses:
+        '200':
+          description: 用户联合登录信息列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserFederationList'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+
+  '/organizations/organizationTree':
+    get:
+      summary: 获取组织机构树
+      operationId: treeOrganization
+      tags:
+        - Organization
+      security:
+        - oauth2:
+          - "user:v1:readOrganization"
+      responses:
+        '200':
+          description: 组织机构列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OrganizationListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/organizations/rootOrganization':
+    get:
+      summary: 获取根组织机构列表
+      operationId: listRootOrganization
+      tags:
+        - Organization
+      security:
+        - oauth2:
+          - "user:v1:readOrganization"
+      responses:
+        '200':
+          description: 根组织机构列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RootOrganizationListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/organizations/rootOrganization/{rootOrganizationId}/organizations':
+    get:
+      summary: 获取根组织机构下的组织机构列表
+      operationId: pageOrganizationsOfRoot
+      tags:
+        - Organization
+      security:
+        - oauth2:
+          - "user:v1:readOrganization"
+      parameters:
+        - name: rootOrganizationId
+          in: path
+          required: true
+          description: 根组织机构ID
+          schema:
+            type: string
+        - name: pageIndex
+          in: query
+          required: true
+          description: 分页-页码
+          schema:
+            type: integer
+            format: int32
+            default: 0
+        - name: pageSize
+          in: query
+          required: true
+          description: 分页-每页记录数
+          schema:
+            type: integer
+            format: int32
+            default: 20
+        - name: mapBean
+          in: query
+          required: false
+          description: 查询条件
+          style: deepObject
+          explode: true
+          schema:
+            type: object
+            properties:
+              ids:
+                title: 查询条件 - IDs(多个用逗号隔开)
+                type: string
+              keyword:
+                title: 查询条件 - 关键字(模糊,代码、名称、描述等)
+                type: string
+              code:
+                title: 查询条件 - 代码(模糊)
+                type: string
+              name:
+                title: 查询条件 - 名称(模糊)
+                type: string
+              description:
+                title: 查询条件 - 描述(模糊)
+                type: string
+      responses:
+        '200':
+          description: 组织机构列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OrganizationListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/organizations/rootOrganization/{rootOrganizationId}/organizationTree':
+    get:
+      summary: 获取根组织机构下的组织机构树
+      operationId: treeOrganizationsOfRoot
+      tags:
+        - Organization
+      security:
+        - oauth2:
+          - "user:v1:readOrganization"
+      parameters:
+        - name: rootOrganizationId
+          in: path
+          required: true
+          description: 根组织机构ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 组织机构列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OrganizationListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+
+  '/organizations/{organizationId}':
+    get:
+      summary: 根据组织机构ID获取组织机构
+      operationId: getOrganization
+      tags:
+        - Organization
+      security:
+        - oauth2:
+          - "user:v1:readOrganization"
+      parameters:
+        - name: organizationId
+          in: path
+          required: true
+          description: 组织机构ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 组织机构信息
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OrganizationLoadResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/organizations/organizationCode/{organizationCode}':
+    get:
+      summary: 根据组织机构代码获取组织机构
+      operationId: getOrganizationByCode
+      tags:
+        - Organization
+      security:
+        - oauth2:
+          - "user:v1:readOrganization"
+      parameters:
+        - name: organizationCode
+          in: path
+          required: true
+          description: 组织机构代码
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 组织机构信息
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OrganizationLoadResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+
+  '/organizations/{organizationId}/users':
+    get:
+      summary: 获取组织机构下的用户列表(弃用)
+      description: 弃用,应该使用 /organizations/users
+      operationId: listUsersByOrganization
+      tags:
+        - Organization
+      security:
+        - oauth2:
+          - "user:v1:readOrganization"
+      parameters:
+        - name: organizationId
+          in: path
+          required: true
+          description: 组织机构ID
+          schema:
+            type: string
+        - name: pageIndex
+          in: query
+          required: true
+          description: 分页-页码
+          schema:
+            type: integer
+            format: int32
+            default: 0
+        - name: pageSize
+          in: query
+          required: true
+          description: 分页-每页记录数
+          schema:
+            type: integer
+            format: int32
+            default: 20
+        - name: mapBean
+          in: query
+          required: false
+          description: 查询条件
+          style: deepObject
+          explode: true
+          schema:
+            type: object
+            properties:
+              keyword:
+                title: 查询条件 - 关键字(模糊,帐号、姓名等)
+                type: string
+              accountName:
+                title: 查询条件 - 账户名(模糊)
+                type: string
+              name:
+                title: 查询条件 - 姓名(模糊)
+                type: string
+      responses:
+        '200':
+          description: 用户分页列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserInfoPageResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/organizations/{organizationId}/allSub/users':
+    get:
+      summary: 获取组织机构(及其子集)下的用户列表(弃用)
+      description: 弃用,应该使用 /organizations/users
+      operationId: listUsersByOrganizationAllSub
+      tags:
+        - Organization
+      security:
+        - oauth2:
+          - "user:v1:readOrganization"
+      parameters:
+        - name: organizationId
+          in: path
+          required: true
+          description: 组织机构ID
+          schema:
+            type: string
+        - name: pageIndex
+          in: query
+          required: true
+          description: 分页-页码
+          schema:
+            type: integer
+            format: int32
+            default: 0
+        - name: pageSize
+          in: query
+          required: true
+          description: 分页-每页记录数
+          schema:
+            type: integer
+            format: int32
+            default: 20
+        - name: mapBean
+          in: query
+          required: false
+          description: 查询条件
+          style: deepObject
+          explode: true
+          schema:
+            type: object
+            properties:
+              keyword:
+                title: 查询条件 - 关键字(模糊,帐号、姓名等)
+                type: string
+              accountName:
+                title: 查询条件 - 账户名(模糊)
+                type: string
+              name:
+                title: 查询条件 - 姓名(模糊)
+                type: string
+      responses:
+        '200':
+          description: 用户分页列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserInfoPageResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/organizations/users':
+    get:
+      summary: 获取组织机构下的用户列表
+      description: organizationId和organizationCode二选一
+      operationId: listOrganizationUsers
+      tags:
+        - Organization
+      security:
+        - oauth2:
+          - "user:v1:readOrganization"
+      parameters:
+        - name: organizationId
+          in: query
+          description: 组织机构Id
+          schema:
+            type: string
+        - name: organizationCode
+          in: query
+          description: 组织机构Code
+          schema:
+            type: string
+        - name: fetchSub
+          in: query
+          description: 是否包含子组织机构的用户
+          schema:
+            type: boolean
+            default: false
+        - name: pageIndex
+          in: query
+          required: true
+          description: 分页-页码
+          schema:
+            type: integer
+            format: int32
+            default: 0
+        - name: pageSize
+          in: query
+          required: true
+          description: 分页-每页记录数
+          schema:
+            type: integer
+            format: int32
+            default: 20
+        - name: mapBean
+          in: query
+          required: false
+          description: 查询条件
+          style: deepObject
+          explode: true
+          schema:
+            type: object
+            properties:
+              keyword:
+                title: 查询条件 - 关键字(模糊,帐号、姓名等)
+                type: string
+              accountName:
+                title: 查询条件 - 账户名(模糊)
+                type: string
+              name:
+                title: 查询条件 - 姓名(模糊)
+                type: string
+      responses:
+        '200':
+          description: 用户分页列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserInfoPageResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/organizations/accountId/{accountId}/rootOrganization/{rootOrganizationId}/organizationChain':
+    get:
+      summary: 获取帐号在根组织机构下的所属组织机构
+      operationId: getAccountOrganizationsOfRoot
+      tags:
+        - Organization
+      security:
+        - oauth2:
+          - "user:v1:readOrganization"
+      parameters:
+        - name: rootOrganizationId
+          in: path
+          required: true
+          description: 根组织机构ID
+          schema:
+            type: string
+        - name: accountId
+          in: path
+          required: true
+          description: 帐号
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 组织机构列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OrganizationListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+
+  '/groups':
+    get:
+      summary: 获取用户组(所有)的列表
+      operationId: pageGroups
+      tags:
+        - Group
+      security:
+        - oauth2:
+          - "user:v1:readGroup"
+      parameters:
+        - name: pageIndex
+          in: query
+          required: true
+          description: 分页-页码
+          schema:
+            type: integer
+            format: int32
+            default: 0
+        - name: pageSize
+          in: query
+          required: true
+          description: 分页-每页记录数
+          schema:
+            type: integer
+            format: int32
+            default: 20
+        - name: mapBean
+          in: query
+          required: false
+          description: 查询条件
+          style: deepObject
+          explode: true
+          schema:
+            type: object
+            properties:
+              ids:
+                title: 查询条件 - IDs(多个用逗号隔开)
+                type: string
+              keyword:
+                title: 查询条件 - 关键字(模糊,名称、描述等)
+                type: string
+              name:
+                title: 查询条件 - 名称(模糊)
+                type: string
+              description:
+                title: 查询条件 - 描述(模糊)
+                type: string
+              type:
+                title: 查询条件 - 类型(精确,1 普通用户组,2 岗位用户组)
+                type: string
+      responses:
+        '200':
+          description: 用户组分页列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupPageResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/groups/{groupId}':
+    get:
+      summary: 根据用户组ID获取用户组(所有)的基本信息
+      operationId: getGroup
+      tags:
+        - Group
+      security:
+        - oauth2:
+          - "user:v1:readGroup"
+      parameters:
+        - name: groupId
+          in: path
+          required: true
+          description: 用户组ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 用户组信息
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupLoadResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/groups/groupCode/{groupCode}':
+    get:
+      summary: 根据用户组代码获取用户组(所有)的基本信息
+      operationId: getGroupByCode
+      tags:
+        - Group
+      security:
+        - oauth2:
+          - "user:v1:readGroup"
+      parameters:
+        - name: groupCode
+          in: path
+          required: true
+          description: 用户组代码
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 用户组信息
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupLoadResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+
+  '/groups/{groupId}/users':
+    get:
+      summary: 获取用户组(所有)下的用户列表(弃用)
+      description: 弃用,应该使用 /groups/users
+      operationId: listUsersByGroup
+      tags:
+        - Group
+      security:
+        - oauth2:
+          - "user:v1:readGroup"
+      parameters:
+        - name: groupId
+          in: path
+          required: true
+          description: 用户组ID
+          schema:
+            type: string
+        - name: pageIndex
+          in: query
+          required: true
+          description: 分页-页码
+          schema:
+            type: integer
+            format: int32
+            default: 0
+        - name: pageSize
+          in: query
+          required: true
+          description: 分页-每页记录数
+          schema:
+            type: integer
+            format: int32
+            default: 20
+        - name: mapBean
+          in: query
+          required: false
+          description: 查询条件
+          style: deepObject
+          explode: true
+          schema:
+            type: object
+            properties:
+              keyword:
+                title: 查询条件 - 关键字(模糊,帐号、姓名等)
+                type: string
+              accountName:
+                title: 查询条件 - 账户名(模糊)
+                type: string
+              name:
+                title: 查询条件 - 姓名(模糊)
+                type: string
+      responses:
+        '200':
+          description: 用户分页列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserInfoPageResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/groups/users':
+    get:
+      summary: 获取用户组(所有)下的用户列表
+      description: groupId和groupCode二选一
+      operationId: listGroupUsers
+      tags:
+        - Group
+      security:
+        - oauth2:
+          - "user:v1:readGroup"
+      parameters:
+        - name: groupId
+          in: query
+          description: 用户组ID
+          schema:
+            type: string
+        - name: groupCode
+          in: query
+          description: 用户组Code
+          schema:
+            type: string
+        - name: pageIndex
+          in: query
+          required: true
+          description: 分页-页码
+          schema:
+            type: integer
+            format: int32
+            default: 0
+        - name: pageSize
+          in: query
+          required: true
+          description: 分页-每页记录数
+          schema:
+            type: integer
+            format: int32
+            default: 20
+        - name: mapBean
+          in: query
+          required: false
+          description: 查询条件
+          style: deepObject
+          explode: true
+          schema:
+            type: object
+            properties:
+              keyword:
+                title: 查询条件 - 关键字(模糊,帐号、姓名等)
+                type: string
+              accountName:
+                title: 查询条件 - 账户名(模糊)
+                type: string
+              name:
+                title: 查询条件 - 姓名(模糊)
+                type: string
+      responses:
+        '200':
+          description: 用户分页列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserInfoPageResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/groups/{groupId}/organizationId/{organizationId}/users':
+    get:
+      summary: 获取用户组(所有)、部门下的用户列表
+      operationId: listUsersByGroupOrganization
+      tags:
+        - Group
+      security:
+        - oauth2:
+          - "user:v1:readGroup"
+      parameters:
+        - name: groupId
+          in: path
+          required: true
+          description: 用户组ID
+          schema:
+            type: string
+        - name: organizationId
+          in: path
+          required: true
+          description: 组织机构ID
+          schema:
+            type: string
+        - name: pageIndex
+          in: query
+          required: true
+          description: 分页-页码
+          schema:
+            type: integer
+            format: int32
+            default: 0
+        - name: pageSize
+          in: query
+          required: true
+          description: 分页-每页记录数
+          schema:
+            type: integer
+            format: int32
+            default: 20
+        - name: mapBean
+          in: query
+          required: false
+          description: 查询条件
+          style: deepObject
+          explode: true
+          schema:
+            type: object
+            properties:
+              keyword:
+                title: 查询条件 - 关键字(模糊,帐号、姓名等)
+                type: string
+              accountName:
+                title: 查询条件 - 账户名(模糊)
+                type: string
+              name:
+                title: 查询条件 - 姓名(模糊)
+                type: string
+      responses:
+        '200':
+          description: 用户分页列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserInfoPageResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/groups/{groupId}/accountId/{accountId}':
+    get:
+      summary: 获取用户组(普通)下指定帐号的关系
+      operationId: loadAccountGroup
+      tags:
+        - Group
+      security:
+        - oauth2:
+          - "user:v1:readGroup"
+      parameters:
+        - name: groupId
+          in: path
+          required: true
+          description: 用户组ID
+          schema:
+            type: string
+        - name: accountId
+          in: path
+          required: true
+          description: 帐号
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 帐号-用户组
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/AccountGroupResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/groups/accountId/{accountId}/groups':
+    get:
+      summary: 获取帐号的用户组(普通)
+      operationId: listAccountGroups
+      tags:
+        - Group
+      security:
+        - oauth2:
+          - "user:v1:readGroup"
+      parameters:
+        - name: accountId
+          in: path
+          required: true
+          description: 帐号
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 用户组
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+
+  '/groups/{groupId}/accountOrganizations':
+    get:
+      summary: 获取用户组(岗位)下的帐号 - 组织机构列表
+      operationId: listAccountOrganizationsByGroup
+      tags:
+        - Group
+      security:
+        - oauth2:
+          - "user:v1:readGroup"
+      parameters:
+        - name: groupId
+          in: path
+          required: true
+          description: 用户组ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 岗位-组织机构-帐号关系的列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupOrganizationAccountListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/groups/accountId/{accountId}/groupOrganizations':
+    get:
+      summary: 获取帐号的用户组(岗位) - 组织机构列表
+      operationId: listGroupOrganizationsByAccount
+      tags:
+        - Group
+      security:
+        - oauth2:
+          - "user:v1:readGroup"
+      parameters:
+        - name: accountId
+          in: path
+          required: true
+          description: 帐号ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 岗位-组织机构-帐号关系的列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupOrganizationAccountListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/groups/organizationId/{organizationId}/accountGroups':
+    get:
+      summary: 获取组织机构下的帐号 - 用户组(岗位)列表
+      operationId: listAccountGroupsByOrganization
+      tags:
+        - Group
+      security:
+        - oauth2:
+          - "user:v1:readGroup"
+      parameters:
+        - name: organizationId
+          in: path
+          required: true
+          description: 组织机构ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 岗位-组织机构-帐号关系的列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupOrganizationAccountListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/groups/{groupId}/accountId/{accountId}/organizations':
+    get:
+      summary: 获取用户组(岗位)下指定帐号 的 组织机构
+      operationId: listOrganizationsByAccountGroup
+      tags:
+        - Group
+      security:
+        - oauth2:
+          - "user:v1:readGroup"
+      parameters:
+        - name: groupId
+          in: path
+          required: true
+          description: 用户组ID
+          schema:
+            type: string
+        - name: accountId
+          in: path
+          required: true
+          description: 帐号ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 岗位-组织机构-帐号关系的列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupOrganizationAccountListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/groups/{groupId}/organizationId/{organizationId}/accounts':
+    get:
+      summary: 获取用户组(岗位)下指定组织机构 的 帐号
+      operationId: listAccountsByGroupOrganization
+      tags:
+        - Group
+      security:
+        - oauth2:
+          - "user:v1:readGroup"
+      parameters:
+        - name: groupId
+          in: path
+          required: true
+          description: 用户组ID
+          schema:
+            type: string
+        - name: organizationId
+          in: path
+          required: true
+          description: 组织机构ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 岗位-组织机构-帐号关系的列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupOrganizationAccountListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/groups/{groupId}/accountId/{accountId}/organizationId/{organizationId}':
+    get:
+      summary: 获取用户组(岗位)下指定帐号、组织机构的关系
+      operationId: loadAccountGroupOrganization
+      tags:
+        - Group
+      security:
+        - oauth2:
+          - "user:v1:readGroup"
+      parameters:
+        - name: groupId
+          in: path
+          required: true
+          description: 用户组ID
+          schema:
+            type: string
+        - name: accountId
+          in: path
+          required: true
+          description: 帐号ID
+          schema:
+            type: string
+        - name: organizationId
+          in: path
+          required: true
+          description: 组织机构ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 岗位-组织机构-帐号关系
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupOrganizationAccountResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+
+  '/labels':
+    get:
+      summary: 获取用户标签列表
+      operationId: pageLabels
+      tags:
+        - Label
+      security:
+        - oauth2:
+          - "user:v1:readLabel"
+      parameters:
+        - name: pageIndex
+          in: query
+          required: true
+          description: 分页-页码
+          schema:
+            type: integer
+            format: int32
+            default: 0
+        - name: pageSize
+          in: query
+          required: true
+          description: 分页-每页记录数
+          schema:
+            type: integer
+            format: int32
+            default: 20
+        - name: mapBean
+          in: query
+          required: false
+          description: 查询条件
+          style: deepObject
+          explode: true
+          schema:
+            type: object
+            properties:
+              keyword:
+                title: 查询条件 - 关键字(模糊,名称、描述等)
+                type: string
+              name:
+                title: 查询条件 - 名称(模糊)
+                type: string
+              description:
+                title: 查询条件 - 描述(模糊)
+                type: string
+      responses:
+        '200':
+          description: 用户标签分页列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/LabelPageResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/labels/{labelId}':
+    get:
+      summary: 获取用户标签
+      operationId: getLabel
+      tags:
+        - Label
+      security:
+        - oauth2:
+          - "user:v1:readLabel"
+      parameters:
+        - name: labelId
+          in: path
+          required: true
+          description: 用户标签ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 用户标签信息
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/LabelLoadResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/labels/{labelId}/accountId/{accountId}':
+    get:
+      summary: 获取用户标签下指定帐号的关系
+      operationId: loadAccountLabel
+      tags:
+        - Label
+      security:
+        - oauth2:
+          - "user:v1:readLabel"
+      parameters:
+        - name: accountId
+          in: path
+          required: true
+          description: 帐号
+          schema:
+            type: string
+        - name: labelId
+          in: path
+          required: true
+          description: 用户标签ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 用户标签
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/AccountLabelResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/labels/{labelId}/users':
+    get:
+      summary: 获取用户标签下的用户列表
+      operationId: listUsersByLabel
+      tags:
+        - Label
+      security:
+        - oauth2:
+          - "user:v1:readLabel"
+      parameters:
+        - name: labelId
+          in: path
+          required: true
+          description: 用户标签ID
+          schema:
+            type: string
+        - name: pageIndex
+          in: query
+          required: true
+          description: 分页-页码
+          schema:
+            type: integer
+            format: int32
+            default: 0
+        - name: pageSize
+          in: query
+          required: true
+          description: 分页-每页记录数
+          schema:
+            type: integer
+            format: int32
+            default: 20
+        - name: mapBean
+          in: query
+          required: false
+          description: 查询条件
+          style: deepObject
+          explode: true
+          schema:
+            type: object
+            properties:
+              keyword:
+                title: 查询条件 - 关键字(模糊,帐号、姓名等)
+                type: string
+              accountName:
+                title: 查询条件 - 账户名(模糊)
+                type: string
+              name:
+                title: 查询条件 - 姓名(模糊)
+                type: string
+      responses:
+        '200':
+          description: 用户分页列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserInfoPageResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/labels/accountId/{accountId}/labels':
+    get:
+      summary: 获取帐号的用户标签
+      operationId: listAccountLabels
+      tags:
+        - Label
+      security:
+        - oauth2:
+          - "user:v1:readLabel"
+      parameters:
+        - name: accountId
+          in: path
+          required: true
+          description: 帐号
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 用户标签
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/LabelListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+
+
+
+  '/admin/posts/accountName/{accountName}/manOrganizations':
+    get:
+      summary: 根据帐号获取可管理的组织机构列表
+      operationId: loadManOrganizationsByAccount
+      tags:
+        - PostAdmin
+      security:
+        - oauth2:
+          - "user:v1:readPost"
+      parameters:
+        - name: accountName
+          in: path
+          required: true
+          description: 帐号
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 岗位-组织机构-帐号关系的列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupOrganizationAccountListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/admin/posts/organizationId/{organizationId}/accountName/{accountName}/manPosts':
+    get:
+      summary: 根据组织机构Id、帐号获取该帐号在组织机构下的可管理岗位
+      operationId: loadManPostsByOrganizationOfAccount
+      tags:
+        - PostAdmin
+      security:
+        - oauth2:
+          - "user:v1:readPost"
+      parameters:
+        - name: organizationId
+          in: path
+          required: true
+          description: 组织机构ID
+          schema:
+            type: string
+        - name: accountName
+          in: path
+          required: true
+          description: 帐号
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 岗位-组织机构设置的列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupOrganizationListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/admin/posts/organizationId/{organizationId}/posts':
+    get:
+      summary: 根据组织机构Id获取组织机构下的所有岗位
+      operationId: loadPostsByOrganization
+      tags:
+        - PostAdmin
+      security:
+        - oauth2:
+          - "user:v1:readPost"
+      parameters:
+        - name: organizationId
+          in: path
+          required: true
+          description: 组织机构ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 岗位-组织机构设置的列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupOrganizationListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+
+  '/admin/posts/organizationId/{organizationId}/postAccounts':
+    get:
+      summary: 根据组织机构Id获取组织机构下的岗位人员
+      operationId: listPostAccountsByOrganization
+      tags:
+        - PostAdmin
+      security:
+        - oauth2:
+          - "user:v1:readPost"
+      parameters:
+        - name: organizationId
+          in: path
+          required: true
+          description: 组织机构ID
+          schema:
+            type: string
+      responses:
+        '200':
+          description: 岗位-组织机构-帐号关系的列表
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupOrganizationAccountListResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+    post:
+      summary: 根据组织机构Id保存组织机构下的岗位人员
+      operationId: savePostAccountsByOrganization
+      tags:
+        - PostAdmin
+      security:
+        - oauth2:
+          - "user:v1:writePost"
+      parameters:
+        - name: organizationId
+          in: path
+          required: true
+          description: 组织机构ID
+          schema:
+            type: string
+      requestBody:
+        description: 岗位-组织机构-帐号关系的列表
+        required: true
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/GroupOrganizationAccountSaveRequest'
+      responses:
+        '200':
+          description: 保存结果
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupOrganizationAccountSaveResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+  '/admin/posts/organizationId/{organizationId}/group/{groupId}/accounts':
+    post:
+      summary: 根据组织机构Id、岗位Id保存人员
+      operationId: saveAccountsByOrganizationPost
+      tags:
+        - PostAdmin
+      security:
+        - oauth2:
+          - "user:v1:writePost"
+      parameters:
+        - name: organizationId
+          in: path
+          required: true
+          description: 组织机构ID
+          schema:
+            type: string
+        - name: groupId
+          in: path
+          required: true
+          description: 岗位(用户组)ID
+          schema:
+            type: string
+      requestBody:
+        description: 岗位-组织机构-帐号关系的列表
+        required: true
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/GroupOrganizationAccountSaveRequest'
+      responses:
+        '200':
+          description: 保存结果
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GroupOrganizationAccountSaveResponse'
+        default:
+          $ref: '#/components/responses/DefaultErrorResponse'
+
+components:
+
+  # Security Schemes
+  
+  securitySchemes:
+    oauth2:
+      type: oauth2
+      flows:
+        clientCredentials:
+          tokenUrl: http://poa-test.paas.newcapec.cn/oauth2/token
+          scopes:
+            "user:v1:readUser": "读取用户"
+            "user:v1:readUserSecret": "读取用户私密信息"
+            "user:v1:readOrganization": "读取组织机构"
+            "user:v1:readGroup": "读取用户组"
+            "user:v1:readLabel": "读取用户标签"
+            "user:v1:readPost": "读取岗位"
+            "user:v1:writePost": "写入岗位"
+
+  responses:
+    'ErrorResponse400':
+      description: unexpected error
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ErrorResponse'
+
+    DefaultErrorResponse:
+      description: unexpected error
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ErrorResponse'
+
+  schemas:
+  
+    # Error
+    
+    ErrorResponse:
+      title: '异常响应'
+      required:
+        - code
+        - message
+      properties:
+        code:
+          title: 异常代码
+          type: integer
+          format: int32
+          default: -1
+        message:
+          title: 异常信息
+          type: string
+          default: "未知错误"
+
+    # Entity
+    
+    BaseEntity:
+      title: 实体 - 基类
+      type: object
+      properties:
+        id:
+          title: ID
+          type: string
+        #companyId:
+        #  title: 'Company ID, 固定 1'
+        #  type: string
+        #  default: '1'
+        #deleted:
+        #  title: 是否删除
+        #  type: boolean
+        #  default: false
+        #addAccount:
+        #  title: 创建人
+        #  type: string
+        #addTime:
+        #  title: 创建时间
+        #  type: string
+        #  format: date-time
+        #editAccount:
+        #  title: 修改人
+        #  type: string
+        #editTime:
+        #  title: 修改时间
+        #  type: string
+        #  format: date-time
+        #deleteAccount:
+        #  title: 删除人
+        #  type: string
+        #deleteTime:
+        #  title: 删除时间
+        #  type: string
+        #  format: date-time
+        #isDataCenter:
+        #  title: 是否来源数据中心
+        #  type: boolean
+        #  default: false
+
+    DictionaryType:
+      title: 实体 - 字典
+      allOf:
+        - $ref: '#/components/schemas/BaseEntity'
+        - type: object
+          title: 实体属性
+          properties:
+            code:
+              title: 代码
+              type: string
+            name:
+              title: 名称
+              type: string
+            enable:
+              title: 是否启用
+              type: boolean
+              default: true
+            sort:
+              title: 排序
+              type: integer
+              format: int64
+            multiLevel:
+              title: 是否多层级
+              type: boolean
+
+    Dictionary:
+      title: 实体 - 字典
+      allOf:
+        - $ref: '#/components/schemas/BaseEntity'
+        - type: object
+          title: 实体属性
+          properties:
+            code:
+              title: 代码
+              type: string
+            name:
+              title: 名称
+              type: string
+            enable:
+              title: 是否启用
+              type: boolean
+              default: true
+            sort:
+              title: 排序
+              type: integer
+              format: int64
+            dictionaryType:
+              title: 字典类型
+              allOf:
+                - $ref: '#/components/schemas/DictionaryType'
+            parentDictionary:
+              title: 父字典
+              allOf:
+                - $ref: '#/components/schemas/Dictionary'
+
+    IdentityType:
+      title: 实体 - 字典
+      allOf:
+        - $ref: '#/components/schemas/BaseEntity'
+        - type: object
+          title: 实体属性
+          properties:
+            code:
+              title: 代码
+              type: string
+            name:
+              title: 名称
+              type: string
+            enable:
+              title: 是否启用
+              type: boolean
+            sort:
+              title: 排序
+              type: integer
+              format: int64
+            parentIdentityType:
+              title: 父身份类型
+              allOf:
+                - $ref: '#/components/schemas/IdentityType'
+
+    User:
+      title: 实体 - 用户
+      allOf:
+        - $ref: '#/components/schemas/BaseEntity'
+        - type: object
+          title: 实体属性
+          properties:
+            uid:
+              title: 用户标识
+              type: string
+            passWord:
+              title: 密码
+              type: string
+            name:
+              title: 名称
+              type: string
+            fullNameSpelling:
+              title: 姓名全拼,根据姓名生成
+              type: string
+            nameSpelling:
+              title: 姓名简拼,根据姓名生成
+              type: string
+            email:
+              title: 名称
+              type: string
+            phoneNumber:
+              title: 名称
+              type: string
+            imageUrl:
+              title: 个人照片地址
+              type: string
+            certificateType:
+              title: 证件类型
+              allOf:
+                - $ref: '#/components/schemas/Dictionary'
+            certificateNumber:
+              title: 证件号码
+              type: string
+            gender:
+              title: 性别
+              allOf:
+                - $ref: '#/components/schemas/Dictionary'
+            nation:
+              title: 民族
+              allOf:
+                - $ref: '#/components/schemas/Dictionary'
+            country:
+              title: 国家
+              allOf:
+                - $ref: '#/components/schemas/Dictionary'
+            address:
+              title: 地址
+              allOf:
+                - $ref: '#/components/schemas/Dictionary'
+
+    Organization:
+      title: 实体 - 组织机构
+      allOf:
+        - $ref: '#/components/schemas/BaseEntity'
+        - type: object
+          title: 实体属性
+          properties:
+            code:
+              title: 代码
+              type: string
+            name:
+              title: 名称
+              type: string
+            enable:
+              title: 是否启用
+              type: boolean
+            sort:
+              title: 排序
+              type: integer
+              format: int64
+            state:
+              title: 状态
+              type: integer
+              format: int32
+            type:
+              title: 类型
+              allOf:
+                - $ref: '#/components/schemas/Dictionary'
+            parentOrganization:
+              title: 所属的父级组织机构
+              allOf:
+                - $ref: '#/components/schemas/Organization'
+
+    Account:
+      title: 实体 - 帐号
+      allOf:
+        - $ref: '#/components/schemas/BaseEntity'
+        - type: object
+          title: 实体属性
+          properties:
+            accountName:
+              title: 帐号
+              type: string
+            state:
+              title: 状态
+              type: string
+            activation:
+              title: 是否激活
+              type: boolean
+            accountExpiryDate:
+              title: 失效时间
+              type: string
+              format: date-time
+            identityType:
+              title: 身份
+              allOf:
+                - $ref: '#/components/schemas/IdentityType'
+            organization:
+              title: 组织机构
+              allOf:
+                - $ref: '#/components/schemas/Organization'
+            user:
+              title: 用户信息
+              allOf:
+                - $ref: '#/components/schemas/User'
+
+
+    # Model
+
+    UserInfoModel:
+      title: 用户信息
+      type: object
+      properties:
+        id:
+          title: 账号Id(弃用,请用accountId)
+          type: string
+        accountId:
+          title: 账号Id
+          type: string
+        accountName:
+          title: 帐号
+          type: string
+        identityTypeId:
+          title: 身份(ID)
+          type: string
+        identityTypeCode:
+          title: 身份(代码)
+          type: string
+        identityTypeName:
+          title: 身份(名称)
+          type: string
+        organizationId:
+          title: 组织机构(ID)
+          type: string
+        organizationCode:
+          title: 组织机构(代码)
+          type: string
+        organizationName:
+          title: 组织机构(名称)
+          type: string
+        userId:
+          title: 用户Id
+          type: string
+        uid:
+          title: 用户号(弃用,应该userNo)
+          type: string
+        userNo:
+          title: 用户号
+          type: string
+        name:
+          title: 姓名
+          type: string
+        fullNameSpelling:
+          title: 姓名全拼,根据姓名生成
+          type: string
+        nameSpelling:
+          title: 姓名简拼,根据姓名生成
+          type: string
+        email:
+          title: 邮箱(注意不是安全邮箱)
+          type: string
+        phoneNumber:
+          title: 手机号(注意不是安全手机)
+          type: string
+        imageUrl:
+          title: 个人照片地址
+          type: string
+        certificateTypeId:
+          title: 证件类型(ID)
+          type: string
+        certificateTypeCode:
+          title: 证件类型(代码)
+          type: string
+        certificateTypeName:
+          title: 证件类型(名称)
+          type: string
+        certificateNumber:
+          title: 证件号码
+          type: string
+        genderId:
+          title: 性别(ID)
+          type: string
+        genderCode:
+          title: 性别(代码)
+          type: string
+        genderName:
+          title: 性别(名称)
+          type: string
+        nationId:
+          title: 民族(ID)
+          type: string
+        nationCode:
+          title: 民族(代码)
+          type: string
+        nationName:
+          title: 民族(名称)
+          type: string
+        countryId:
+          title: 国家(ID)
+          type: string
+        countryCode:
+          title: 国家(代码)
+          type: string
+        countryName:
+          title: 国家(名称)
+          type: string
+        addressId:
+          title: 地址(ID)
+          type: string
+        addressCode:
+          title: 地址(代码)
+          type: string
+        addressName:
+          title: 地址(名称)
+          type: string
+
+    OrganizationModel:
+      title: 组织机构信息
+      type: object
+      properties:
+        id:
+          title: ID
+          type: string
+        code:
+          title: 代码
+          type: string
+        name:
+          title: 名称
+          type: string
+        description:
+          title: 描述
+          type: string
+        isRootOrganization:
+          title: 是否根组织机构
+          type: string
+        rootOrganizationId:
+          title: 所在根组织机构(ID)
+          type: string
+        parentId:
+          title: 父级组织机构(ID)
+          type: string
+        parentCode:
+          title: 父级组织机构(代码)
+          type: string
+        parentName:
+          title: 父级组织机构(名称)
+          type: string
+        typeId:
+          title: 类型(ID)
+          type: string
+        typeName:
+          title: 类型(名称)
+          type: string
+
+    GroupModel:
+      title: 用户组信息
+      type: object
+      properties:
+        id:
+          title: ID
+          type: string
+        code:
+          title: 代码
+          type: string
+        name:
+          title: 名称
+          type: string
+        description:
+          title: 描述
+          type: string
+        type:
+          title: 类型(1 普通用户组,2 岗位用户组)
+          type: string
+
+    LabelModel:
+      title: 用户标签信息
+      type: object
+      properties:
+        id:
+          title: ID
+          type: string
+        name:
+          title: 名称
+          type: string
+        description:
+          title: 描述
+          type: string
+
+    GroupOrganizationModel:
+      title: 岗位组织机构设置信息
+      type: object
+      properties:
+        id:
+          title: ID
+          type: string
+        groupId:
+          title: 用户组(岗位)ID
+          type: string
+        organizationId:
+          title: 组织机构ID
+          type: string
+
+        groupCode:
+          title: 用户组(岗位)代码
+          type: string
+        groupName:
+          title: 用户组(岗位)名称
+          type: string
+        groupDescription:
+          title: 用户组(岗位)描述
+          type: string
+        organizationCode:
+          title: 组织机构代码
+          type: string
+        organizationName:
+          title: 组织机构名称
+          type: string
+        organizationDescription:
+          title: 组织机构描述
+          type: string
+
+    GroupOrganizationAccountModel:
+      title: 岗位组织机构帐号信息
+      type: object
+      properties:
+        id:
+          title: ID
+          type: string
+        groupId:
+          title: 用户组(岗位)ID
+          type: string
+        organizationId:
+          title: 组织机构ID
+          type: string
+        accountId:
+          title: 帐号ID
+          type: string
+
+        groupCode:
+          title: 用户组(岗位)代码
+          type: string
+        groupName:
+          title: 用户组(岗位)名称
+          type: string
+        organizationCode:
+          title: 组织机构代码
+          type: string
+        organizationName:
+          title: 组织机构名称
+          type: string
+        accountName:
+          title: 帐号
+          type: string
+        userName:
+          title: 用户姓名
+          type: string
+
+        accountOrganizationId:
+          title: 帐号的组织机构ID
+          type: string
+        accountOrganizationCode:
+          title: 帐号的组织机构代码
+          type: string
+        accountOrganizationName:
+          title: 帐号的组织机构名称
+          type: string
+
+
+    # Request VO
+    GroupOrganizationAccountSaveRequest:
+      title: 请求
+      properties:
+        groupOrganizatonAccounts:
+          title: 岗位组织机构帐号信息列表
+          type: array
+          items:
+            $ref: '#/components/schemas/GroupOrganizationAccountModel'
+
+
+    # Response Data
+
+
+    # Response VO
+
+    AbstractApiResponse:
+      title: 响应
+      properties:
+        acknowleged:
+          title: 响应结果
+          type: boolean
+          default: true
+        code:
+          title: 响应代码
+          type: integer
+          format: int32
+          default: 0
+        message:
+          title: 响应信息
+          type: string
+    DefaultApiResponse:
+      allOf:
+        - $ref: '#/components/schemas/AbstractApiResponse'
+        - type: object
+          title: 响应数据
+          properties:
+            data:
+              title: 响应数据
+              type: object
+
+
+    UserInfoPageResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 分页数据
+              properties:
+                pageCount:
+                  title: 分页总数
+                  type: integer
+                  format: int32
+                totalCount:
+                  title: 记录总数
+                  type: integer
+                  format: int64
+                currentItemCount:
+                  title: 当前返回记录数
+                  type: integer
+                  format: int32
+                items:
+                  title: 当前返回记录集
+                  type: array
+                  items:
+                    $ref: '#/components/schemas/UserInfoModel'
+
+    UserInfoLoadResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - $ref: '#/components/schemas/UserInfoModel'
+
+    UserInfoListResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                items:
+                  title: 当前返回记录集
+                  type: array
+                  items:
+                    $ref: '#/components/schemas/UserInfoModel'
+
+    UserPortraitLoadResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                portraitBase64:
+                  title: 头像数据(Base64)
+                  type: string
+    UserSafety:
+      type: object
+      title: 安全信息
+      properties:
+        userId:
+          title: 用户Id
+          type: string
+        accountId:
+          title: 账号Id
+          type: string
+        accountName:
+          title: 账号名
+          type: string
+        securePhone:
+          title: 安全手机
+          type: string
+        secureEmail:
+          title: 安全邮箱
+          type: string
+
+    UserSafetyList:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                items:
+                  title: 当前返回记录集
+                  type: array
+                  items:
+                    $ref: '#/components/schemas/UserSafety'
+
+    UserSafetyPhoneNumber:
+      type: object
+      title: 安全手机
+      properties:
+        userId:
+          title: 用户Id
+          type: string
+        accountId:
+          title: 账号Id
+          type: string
+        accountName:
+          title: 账号名
+          type: string
+        securePhone:
+          title: 安全手机
+          type: string
+
+    UserSafetyPhoneNumberList:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                items:
+                  title: 当前返回记录集
+                  type: array
+                  items:
+                    $ref: '#/components/schemas/UserSafetyPhoneNumber'
+
+    UserSafetyEmail:
+      type: object
+      title: 安全邮箱
+      properties:
+        userId:
+          title: 用户Id
+          type: string
+        accountId:
+          title: 账号Id
+          type: string
+        accountName:
+          title: 账号名
+          type: string
+        secureEmail:
+          title: 安全邮箱
+          type: string
+
+    UserSafetyEmailList:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                items:
+                  title: 当前返回记录集
+                  type: array
+                  items:
+                    $ref: '#/components/schemas/UserSafetyEmail'
+
+    UserSafetyLoadResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - $ref: '#/components/schemas/UserSafety'
+
+    UserFederation:
+      type: object
+      title: 联合登录信息
+      properties:
+        userId:
+          title: 用户Id
+          type: string
+        accountId:
+          title: 账号Id
+          type: string
+        accountName:
+          title: 账号名
+          type: string
+        federatedType:
+          title: 联合登录类型
+          type: string
+          enum:
+          - qq
+          - openweixin
+          - workweixin
+          - alipay
+          - dingtalk
+        federatedId:
+          title: 联合登录ID
+          type: string
+
+    UserFederationList:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                items:
+                  title: 当前返回记录集
+                  type: array
+                  items:
+                    $ref: '#/components/schemas/UserFederation'
+
+    UserFederationLoadResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - $ref: '#/components/schemas/UserFederation'
+
+    RootOrganizationListResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                items:
+                  title: 当前返回记录集
+                  type: array
+                  items:
+                    $ref: '#/components/schemas/OrganizationModel'
+
+    OrganizationListResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                items:
+                  title: 当前返回记录集
+                  type: array
+                  items:
+                    $ref: '#/components/schemas/OrganizationModel'
+
+    OrganizationLoadResponse: 
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - $ref: '#/components/schemas/OrganizationModel'
+
+
+    GroupPageResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 分页数据
+              properties:
+                pageCount:
+                  title: 分页总数
+                  type: integer
+                  format: int32
+                totalCount:
+                  title: 记录总数
+                  type: integer
+                  format: int64
+                currentItemCount:
+                  title: 当前返回记录数
+                  type: integer
+                  format: int32
+                items:
+                  title: 当前返回记录集
+                  type: array
+                  items:
+                    $ref: '#/components/schemas/GroupModel'
+
+    GroupListResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                items:
+                  title: 当前返回记录集
+                  type: array
+                  items:
+                    $ref: '#/components/schemas/GroupModel'
+
+    GroupLoadResponse: 
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - $ref: '#/components/schemas/GroupModel'
+
+    AccountGroupResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                accountGroupId:
+                  title: 帐号用户组ID
+                  type: string
+
+    GroupOrganizationAccountListResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                items:
+                  title: 当前返回记录集
+                  type: array
+                  items:
+                    $ref: '#/components/schemas/GroupOrganizationAccountModel'
+
+    GroupOrganizationAccountResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                groupOrganizationAccountId:
+                  title: 岗位组织机构帐号的关系ID
+                  type: string
+
+    LabelPageResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 分页数据
+              properties:
+                pageCount:
+                  title: 分页总数
+                  type: integer
+                  format: int32
+                totalCount:
+                  title: 记录总数
+                  type: integer
+                  format: int64
+                currentItemCount:
+                  title: 当前返回记录数
+                  type: integer
+                  format: int32
+                items:
+                  title: 当前返回记录集
+                  type: array
+                  items:
+                    $ref: '#/components/schemas/LabelModel'
+
+    LabelListResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                items:
+                  title: 当前返回记录集
+                  type: array
+                  items:
+                    $ref: '#/components/schemas/LabelModel'
+
+    LabelLoadResponse: 
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - $ref: '#/components/schemas/LabelModel'
+
+    AccountLabelResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                accountLabelId:
+                  title: 帐号标签ID
+                  type: string
+
+
+    GroupOrganizationListResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                items:
+                  title: 当前返回记录集
+                  type: array
+                  items:
+                    $ref: '#/components/schemas/GroupOrganizationModel'
+
+    GroupOrganizationAccountSaveResponse:
+      allOf:
+      - $ref: '#/components/schemas/DefaultApiResponse'
+      - type: object
+        title: 响应数据
+        properties:
+          data:
+            allOf:
+            - type: object
+              title: 列表数据
+              properties:
+                message:
+                  title: 保存结果
+                  type: string