_schema-version: 3.3.0 ID: capire.samples version: 2.1.0 description: "A monorepo with several samples for CAP." parameters: enable-parallel-deployments: true build-parameters: before-all: - builder: custom commands: - npm ci - npx cds build --production - npx cds build orders --for nodejs --production --ws-pack - npx cds build reviews --for nodejs --production - npx cds build bookstore --for nodejs --production --ws-pack modules: - name: orders-srv type: nodejs path: orders/gen/srv parameters: buildpack: nodejs_buildpack readiness-health-check-type: http readiness-health-check-http-endpoint: /health disk-quota: 256M memory: 256M build-parameters: builder: npm provides: - name: orders-api properties: srv-url: ${default-url} requires: - name: samples-messaging - name: samples-db - name: samples-auth - name: reviews-srv type: nodejs path: reviews/gen/srv parameters: buildpack: nodejs_buildpack readiness-health-check-type: http readiness-health-check-http-endpoint: /health disk-quota: 256M memory: 256M build-parameters: builder: npm provides: - name: reviews-api properties: srv-url: ${default-url} requires: - name: samples-messaging - name: samples-db - name: samples-auth - name: bookstore-srv type: nodejs path: bookstore/gen/srv parameters: buildpack: nodejs_buildpack readiness-health-check-type: http readiness-health-check-http-endpoint: /health disk-quota: 256M memory: 256M properties: cds_requires_ReviewsService_credentials: {"destination": "reviews-dest","path": "/reviews"} cds_requires_OrdersService_credentials: {"destination": "orders-dest","path": "/odata/v4/orders"} build-parameters: builder: npm provides: - name: bookstore-api properties: srv-url: ${default-url} requires: - name: samples-messaging - name: samples-db - name: samples-auth - name: samples-destination - name: samples type: approuter.nodejs path: .deploy/app-router parameters: keep-existing-routes: true disk-quota: 256M memory: 256M properties: TENANT_HOST_PATTERN: "^(.*)-${default-uri}" requires: - name: orders-api group: destinations properties: name: orders-api # must be used in xs-app.json as well url: ~{srv-url} forwardAuthToken: true - name: reviews-api group: destinations properties: name: reviews-api # must be used in xs-app.json as well url: ~{srv-url} forwardAuthToken: true - name: bookstore-api group: destinations properties: name: bookstore-api # must be used in xs-app.json as well url: ~{srv-url} forwardAuthToken: true - name: mtx-api group: destinations properties: name: mtx-api # must be used in xs-app.json as well url: ~{mtx-url} - name: samples-auth provides: - name: app-api properties: app-protocol: ${protocol} app-uri: ${default-uri} - name: destination-content type: com.sap.application.content requires: - name: orders-api - name: reviews-api - name: bookstore-api - name: samples-auth parameters: service-key: name: xsuaa-service-key - name: samples-destination parameters: content-target: true build-parameters: no-source: true parameters: content: instance: existing_destinations_policy: update destinations: - Name: orders-dest URL: ~{orders-api/srv-url} Authentication: OAuth2ClientCredentials TokenServiceInstanceName: samples-auth TokenServiceKeyName: xsuaa-service-key - Name: reviews-dest URL: ~{reviews-api/srv-url} Authentication: OAuth2ClientCredentials TokenServiceInstanceName: samples-auth TokenServiceKeyName: xsuaa-service-key - name: samples-mtx type: nodejs path: gen/mtx/sidecar build-parameters: builder: npm parameters: instances: 1 memory: 256M disk-quota: 512M provides: - name: mtx-api properties: mtx-url: ${default-url} requires: - name: samples-db - name: samples-registry - name: samples-auth - name: app-api properties: SUBSCRIPTION_URL: ~{app-protocol}://\${tenant_subdomain}-~{app-uri} resources: - name: samples-messaging type: org.cloudfoundry.managed-service parameters: service: enterprise-messaging service-plan: default path: ./event-mesh.json config: emname: bookstore-${org}-${space} namespace: cap/samples/${space} - name: samples-db type: org.cloudfoundry.managed-service parameters: service: service-manager service-plan: container - name: samples-auth type: org.cloudfoundry.managed-service processed-after: - samples-messaging requires: - name: app-api parameters: service: xsuaa service-plan: application path: ./xs-security.json config: xsappname: samples-${org}-${space} tenant-mode: shared oauth2-configuration: redirect-uris: - https://*-~{app-api/app-uri}/** - name: samples-destination type: org.cloudfoundry.managed-service parameters: service: destination service-plan: lite - name: samples-registry type: org.cloudfoundry.managed-service requires: - name: mtx-api parameters: service: saas-registry service-plan: application config: xsappname: samples-${org}-${space} appName: samples-${org}-${space} displayName: samples-shared-db description: CAP Samples with shared-db and multitenancy category: 'Samples shared-db' appUrls: getDependencies: ~{mtx-api/mtx-url}/-/cds/saas-provisioning/dependencies onSubscription: ~{mtx-api/mtx-url}/-/cds/saas-provisioning/tenant/{tenantId} onSubscriptionAsync: true onUnSubscriptionAsync: true onUpdateDependenciesAsync: true callbackTimeoutMillis: 300000 # Increase if your deployments are taking longer than that