diff --git a/apps/documentations/base/cde-api-worker-copy.yaml b/apps/documentations/base/cde-api-worker-copy.yaml new file mode 100644 index 0000000..4627a68 --- /dev/null +++ b/apps/documentations/base/cde-api-worker-copy.yaml @@ -0,0 +1,370 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-copy + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.9" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-copy: + enabled: true + serviceAccount: + enabled: + _default: true + name: + _default: documentations-vault + deployment: + enabled: true + name: + _default: worker-copy + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 100m + memory: + _default: 64Mi + command: + _default: ["/bin/sh", "-ec"] + args: + _default: + - | + set -a + [ -f /vault/secrets/cde-api-postgres ] && . /vault/secrets/cde-api-postgres + [ -f /vault/secrets/cde-api-s3 ] && . /vault/secrets/cde-api-s3 + [ -f /vault/secrets/cde-api-zeebe ] && . /vault/secrets/cde-api-zeebe + [ -f /vault/secrets/cde-api-rabbitmq ] && . /vault/secrets/cde-api-rabbitmq + set +a + exec /opt/worker + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-copy:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://backend-svc.eav.svc.cluster.local:80" + - name: CDE_API_APP_NAME + value: + _default: "worker-copy" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-copy" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://backend-svc.system-log.svc.cluster.local:80" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://backend-svc.processing.svc.cluster.local:80" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:80" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:80" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend-svc.django.svc.cluster.local:80" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://backend-api-svc.documentations.svc.cluster.local:80" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-svc.flows.svc.cluster.local:80" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://backend-svc.workspaces.svc.cluster.local:80" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_ISSUES_SYNC_ENABLED + value: + _default: "false" + - name: CDE_API_ISSUES_BASE_URL + value: + _default: "http://issues-service.platform:8000" + - name: CDE_API_ISSUES_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_ISSUES_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_COPY_WORKER_JOBS + value: + _default: "" + - name: CDE_API_COPY_JOB_TIMEOUT_MINUTES + value: + _default: "30" + - name: CDE_API_COPY_STEP_PARALLELISM + value: + _default: "1" + - name: CDE_API_COPY_S3_PARALLELISM + value: + _default: "1" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_RABBITMQ__HOST + value: + _default: "rabbitmq.rabbitmq.svc.cluster.local" + - name: CDE_API_RABBITMQ__PORT + value: + _default: "5672" + podAnnotations: + _default: + traffic.sidecar.istio.io/excludeOutboundPorts: "4317,4318,9411,8200" + vault.hashicorp.com/agent-init-first: "true" + vault.hashicorp.com/agent-inject: "true" + vault.hashicorp.com/agent-pre-populate-only: "true" + vault.hashicorp.com/auth-path: auth/kubernetes + vault.hashicorp.com/role: documentations + vault.hashicorp.com/agent-inject-secret-cde-api-postgres: secrets/data/apps/documentations/postgres + vault.hashicorp.com/agent-inject-template-cde-api-postgres: |- + {{- with secret "secrets/data/apps/documentations/postgres" -}} + CDE_API_DATABASE__HOST={{ index .Data.data "host" }} + CDE_API_DATABASE__PORT={{ index .Data.data "port" }} + CDE_API_DATABASE__NAME={{ index .Data.data "database" }} + CDE_API_DATABASE__USER={{ index .Data.data "username" }} + CDE_API_DATABASE__PASSWORD={{ index .Data.data "password" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-s3: secrets/data/minio/apps/documentations + vault.hashicorp.com/agent-inject-template-cde-api-s3: |- + {{- with secret "secrets/data/minio/apps/documentations" -}} + CDE_API_S3_ENDPOINT={{ index .Data.data.client "endpoint" }} + CDE_API_S3_ACCESS_KEY={{ index .Data.data "access_key" }} + CDE_API_S3_SECRET_KEY={{ index .Data.data "secret_key" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-zeebe: secrets/data/apps/cde-api/zeebe + vault.hashicorp.com/agent-inject-template-cde-api-zeebe: |- + {{- with secret "secrets/data/apps/cde-api/zeebe" -}} + CDE_API_ZEEBE_GATEWAY_ADDRESS={{ index .Data.data "gateway_address" }} + CDE_API_ZEEBE_CLIENT_ID={{ index .Data.data "client_id" }} + CDE_API_ZEEBE_CLIENT_SECRET={{ index .Data.data "client_secret" }} + CDE_API_ZEEBE_AUTH_SERVER_URL={{ index .Data.data "auth_server_url" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-rabbitmq: secrets/data/rabbitmq/apps/cde + vault.hashicorp.com/agent-inject-template-cde-api-rabbitmq: |- + {{- with secret "secrets/data/rabbitmq/apps/cde" -}} + CDE_API_RABBITMQ__USER={{ index .Data.data "username" }} + CDE_API_RABBITMQ__PASSWORD={{ index .Data.data "password" }} + CDE_API_RABBITMQ__VHOST={{ index .Data.data "vhost" }} + {{- end -}} + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/base/cde-api-worker-move.yaml b/apps/documentations/base/cde-api-worker-move.yaml new file mode 100644 index 0000000..efa12a0 --- /dev/null +++ b/apps/documentations/base/cde-api-worker-move.yaml @@ -0,0 +1,352 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-move + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.9" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-move: + enabled: true + serviceAccount: + enabled: + _default: true + name: + _default: documentations-vault + deployment: + enabled: true + name: + _default: worker-move + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 100m + memory: + _default: 64Mi + command: + _default: ["/bin/sh", "-ec"] + args: + _default: + - | + set -a + [ -f /vault/secrets/cde-api-postgres ] && . /vault/secrets/cde-api-postgres + [ -f /vault/secrets/cde-api-s3 ] && . /vault/secrets/cde-api-s3 + [ -f /vault/secrets/cde-api-zeebe ] && . /vault/secrets/cde-api-zeebe + [ -f /vault/secrets/cde-api-rabbitmq ] && . /vault/secrets/cde-api-rabbitmq + set +a + exec /opt/worker + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-move:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://backend-svc.eav.svc.cluster.local:80" + - name: CDE_API_APP_NAME + value: + _default: "worker-move" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-move" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://backend-svc.system-log.svc.cluster.local:80" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "10" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://backend-svc.processing.svc.cluster.local:80" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:80" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:80" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend-svc.django.svc.cluster.local:80" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://backend-api-svc.documentations.svc.cluster.local:80" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-svc.flows.svc.cluster.local:80" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://backend-svc.workspaces.svc.cluster.local:80" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_MOVE_WORKER_JOBS + value: + _default: "" + - name: CDE_API_MOVE_JOB_TIMEOUT_MINUTES + value: + _default: "30" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_RABBITMQ__HOST + value: + _default: "rabbitmq.rabbitmq.svc.cluster.local" + - name: CDE_API_RABBITMQ__PORT + value: + _default: "5672" + podAnnotations: + _default: + traffic.sidecar.istio.io/excludeOutboundPorts: "4317,4318,9411,8200" + vault.hashicorp.com/agent-init-first: "true" + vault.hashicorp.com/agent-inject: "true" + vault.hashicorp.com/agent-pre-populate-only: "true" + vault.hashicorp.com/auth-path: auth/kubernetes + vault.hashicorp.com/role: documentations + vault.hashicorp.com/agent-inject-secret-cde-api-postgres: secrets/data/apps/documentations/postgres + vault.hashicorp.com/agent-inject-template-cde-api-postgres: |- + {{- with secret "secrets/data/apps/documentations/postgres" -}} + CDE_API_DATABASE__HOST={{ index .Data.data "host" }} + CDE_API_DATABASE__PORT={{ index .Data.data "port" }} + CDE_API_DATABASE__NAME={{ index .Data.data "database" }} + CDE_API_DATABASE__USER={{ index .Data.data "username" }} + CDE_API_DATABASE__PASSWORD={{ index .Data.data "password" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-s3: secrets/data/minio/apps/documentations + vault.hashicorp.com/agent-inject-template-cde-api-s3: |- + {{- with secret "secrets/data/minio/apps/documentations" -}} + CDE_API_S3_ENDPOINT={{ index .Data.data.client "endpoint" }} + CDE_API_S3_ACCESS_KEY={{ index .Data.data "access_key" }} + CDE_API_S3_SECRET_KEY={{ index .Data.data "secret_key" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-zeebe: secrets/data/apps/cde-api/zeebe + vault.hashicorp.com/agent-inject-template-cde-api-zeebe: |- + {{- with secret "secrets/data/apps/cde-api/zeebe" -}} + CDE_API_ZEEBE_GATEWAY_ADDRESS={{ index .Data.data "gateway_address" }} + CDE_API_ZEEBE_CLIENT_ID={{ index .Data.data "client_id" }} + CDE_API_ZEEBE_CLIENT_SECRET={{ index .Data.data "client_secret" }} + CDE_API_ZEEBE_AUTH_SERVER_URL={{ index .Data.data "auth_server_url" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-rabbitmq: secrets/data/rabbitmq/apps/cde + vault.hashicorp.com/agent-inject-template-cde-api-rabbitmq: |- + {{- with secret "secrets/data/rabbitmq/apps/cde" -}} + CDE_API_RABBITMQ__USER={{ index .Data.data "username" }} + CDE_API_RABBITMQ__PASSWORD={{ index .Data.data "password" }} + CDE_API_RABBITMQ__VHOST={{ index .Data.data "vhost" }} + {{- end -}} + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/base/cde-api-worker-s32d-create-upload.yaml b/apps/documentations/base/cde-api-worker-s32d-create-upload.yaml new file mode 100644 index 0000000..ecb4a34 --- /dev/null +++ b/apps/documentations/base/cde-api-worker-s32d-create-upload.yaml @@ -0,0 +1,251 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-create-upload + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.9" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-create-upload: + enabled: true + serviceAccount: + enabled: + _default: true + name: + _default: documentations-vault + deployment: + enabled: true + name: + _default: worker-s32d-create-upload + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 200m + memory: + _default: 256Mi + command: + _default: ["/bin/sh", "-ec"] + args: + _default: + - | + set -a + [ -f /vault/secrets/cde-api-postgres ] && . /vault/secrets/cde-api-postgres + [ -f /vault/secrets/cde-api-s3 ] && . /vault/secrets/cde-api-s3 + [ -f /vault/secrets/cde-api-zeebe ] && . /vault/secrets/cde-api-zeebe + set +a + exec /opt/worker + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-create-upload:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://backend-svc.eav.svc.cluster.local:80" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-create-upload" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-create-upload" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_READERAT_BLOCK_SIZE_MB + value: + _default: "8" + - name: CDE_API_S32D_READERAT_CACHE_BLOCKS + value: + _default: "8" + - name: CDE_API_S32D_WORKER_CREATE_UPLOAD_TIMEOUT_MIN + value: + _default: "240" + - name: CDE_API_S32D_WORKER_CREATE_UPLOAD_MAX_JOBS + value: + _default: "2" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-svc.flows.svc.cluster.local:80" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + podAnnotations: + _default: + traffic.sidecar.istio.io/excludeOutboundPorts: "4317,4318,9411,8200" + vault.hashicorp.com/agent-init-first: "true" + vault.hashicorp.com/agent-inject: "true" + vault.hashicorp.com/agent-pre-populate-only: "true" + vault.hashicorp.com/auth-path: auth/kubernetes + vault.hashicorp.com/role: documentations + vault.hashicorp.com/agent-inject-secret-cde-api-postgres: secrets/data/apps/documentations/postgres + vault.hashicorp.com/agent-inject-template-cde-api-postgres: |- + {{- with secret "secrets/data/apps/documentations/postgres" -}} + CDE_API_DATABASE__HOST={{ index .Data.data "host" }} + CDE_API_DATABASE__PORT={{ index .Data.data "port" }} + CDE_API_DATABASE__NAME={{ index .Data.data "database" }} + CDE_API_DATABASE__USER={{ index .Data.data "username" }} + CDE_API_DATABASE__PASSWORD={{ index .Data.data "password" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-s3: secrets/data/minio/apps/documentations + vault.hashicorp.com/agent-inject-template-cde-api-s3: |- + {{- with secret "secrets/data/minio/apps/documentations" -}} + CDE_API_S3_ENDPOINT={{ index .Data.data.client "endpoint" }} + CDE_API_S3_ACCESS_KEY={{ index .Data.data "access_key" }} + CDE_API_S3_SECRET_KEY={{ index .Data.data "secret_key" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-zeebe: secrets/data/apps/cde-api/zeebe + vault.hashicorp.com/agent-inject-template-cde-api-zeebe: |- + {{- with secret "secrets/data/apps/cde-api/zeebe" -}} + CDE_API_ZEEBE_GATEWAY_ADDRESS={{ index .Data.data "gateway_address" }} + CDE_API_ZEEBE_CLIENT_ID={{ index .Data.data "client_id" }} + CDE_API_ZEEBE_CLIENT_SECRET={{ index .Data.data "client_secret" }} + CDE_API_ZEEBE_AUTH_SERVER_URL={{ index .Data.data "auth_server_url" }} + {{- end -}} + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/base/cde-api-worker-s32d-handle-error.yaml b/apps/documentations/base/cde-api-worker-s32d-handle-error.yaml new file mode 100644 index 0000000..2433a1f --- /dev/null +++ b/apps/documentations/base/cde-api-worker-s32d-handle-error.yaml @@ -0,0 +1,245 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-handle-error + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.9" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-handle-error: + enabled: true + serviceAccount: + enabled: + _default: true + name: + _default: documentations-vault + deployment: + enabled: true + name: + _default: worker-s32d-handle-error + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 50m + memory: + _default: 64Mi + command: + _default: ["/bin/sh", "-ec"] + args: + _default: + - | + set -a + [ -f /vault/secrets/cde-api-postgres ] && . /vault/secrets/cde-api-postgres + [ -f /vault/secrets/cde-api-s3 ] && . /vault/secrets/cde-api-s3 + [ -f /vault/secrets/cde-api-zeebe ] && . /vault/secrets/cde-api-zeebe + set +a + exec /opt/worker + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-handle-error:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://backend-svc.eav.svc.cluster.local:80" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-handle-error" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-handle-error" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "2" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_WORKER_HANDLE_ERROR_TIMEOUT_MIN + value: + _default: "10" + - name: CDE_API_S32D_WORKER_HANDLE_ERROR_MAX_JOBS + value: + _default: "4" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-svc.flows.svc.cluster.local:80" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + podAnnotations: + _default: + traffic.sidecar.istio.io/excludeOutboundPorts: "4317,4318,9411,8200" + vault.hashicorp.com/agent-init-first: "true" + vault.hashicorp.com/agent-inject: "true" + vault.hashicorp.com/agent-pre-populate-only: "true" + vault.hashicorp.com/auth-path: auth/kubernetes + vault.hashicorp.com/role: documentations + vault.hashicorp.com/agent-inject-secret-cde-api-postgres: secrets/data/apps/documentations/postgres + vault.hashicorp.com/agent-inject-template-cde-api-postgres: |- + {{- with secret "secrets/data/apps/documentations/postgres" -}} + CDE_API_DATABASE__HOST={{ index .Data.data "host" }} + CDE_API_DATABASE__PORT={{ index .Data.data "port" }} + CDE_API_DATABASE__NAME={{ index .Data.data "database" }} + CDE_API_DATABASE__USER={{ index .Data.data "username" }} + CDE_API_DATABASE__PASSWORD={{ index .Data.data "password" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-s3: secrets/data/minio/apps/documentations + vault.hashicorp.com/agent-inject-template-cde-api-s3: |- + {{- with secret "secrets/data/minio/apps/documentations" -}} + CDE_API_S3_ENDPOINT={{ index .Data.data.client "endpoint" }} + CDE_API_S3_ACCESS_KEY={{ index .Data.data "access_key" }} + CDE_API_S3_SECRET_KEY={{ index .Data.data "secret_key" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-zeebe: secrets/data/apps/cde-api/zeebe + vault.hashicorp.com/agent-inject-template-cde-api-zeebe: |- + {{- with secret "secrets/data/apps/cde-api/zeebe" -}} + CDE_API_ZEEBE_GATEWAY_ADDRESS={{ index .Data.data "gateway_address" }} + CDE_API_ZEEBE_CLIENT_ID={{ index .Data.data "client_id" }} + CDE_API_ZEEBE_CLIENT_SECRET={{ index .Data.data "client_secret" }} + CDE_API_ZEEBE_AUTH_SERVER_URL={{ index .Data.data "auth_server_url" }} + {{- end -}} + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/base/cde-api-worker-s32d-process-workflows.yaml b/apps/documentations/base/cde-api-worker-s32d-process-workflows.yaml new file mode 100644 index 0000000..ba6f442 --- /dev/null +++ b/apps/documentations/base/cde-api-worker-s32d-process-workflows.yaml @@ -0,0 +1,314 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-process-workflows + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.9" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-process-workflows: + enabled: true + serviceAccount: + enabled: + _default: true + name: + _default: documentations-vault + deployment: + enabled: true + name: + _default: worker-s32d-process-workflows + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 200m + memory: + _default: 256Mi + command: + _default: ["/bin/sh", "-ec"] + args: + _default: + - | + set -a + [ -f /vault/secrets/cde-api-postgres ] && . /vault/secrets/cde-api-postgres + [ -f /vault/secrets/cde-api-s3 ] && . /vault/secrets/cde-api-s3 + [ -f /vault/secrets/cde-api-zeebe ] && . /vault/secrets/cde-api-zeebe + set +a + exec /opt/worker + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-process-workflows:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://backend-svc.eav.svc.cluster.local:80" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-process-workflows" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-process-workflows" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_WORKER_PROCESS_WORKFLOWS_TIMEOUT_MIN + value: + _default: "480" + - name: CDE_API_S32D_WORKER_PROCESS_WORKFLOWS_MAX_JOBS + value: + _default: "2" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://backend-svc.processing.svc.cluster.local:80" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:80" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:80" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend-svc.django.svc.cluster.local:80" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://backend-api-svc.documentations.svc.cluster.local:80" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-svc.flows.svc.cluster.local:80" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + podAnnotations: + _default: + traffic.sidecar.istio.io/excludeOutboundPorts: "4317,4318,9411,8200" + vault.hashicorp.com/agent-init-first: "true" + vault.hashicorp.com/agent-inject: "true" + vault.hashicorp.com/agent-pre-populate-only: "true" + vault.hashicorp.com/auth-path: auth/kubernetes + vault.hashicorp.com/role: documentations + vault.hashicorp.com/agent-inject-secret-cde-api-postgres: secrets/data/apps/documentations/postgres + vault.hashicorp.com/agent-inject-template-cde-api-postgres: |- + {{- with secret "secrets/data/apps/documentations/postgres" -}} + CDE_API_DATABASE__HOST={{ index .Data.data "host" }} + CDE_API_DATABASE__PORT={{ index .Data.data "port" }} + CDE_API_DATABASE__NAME={{ index .Data.data "database" }} + CDE_API_DATABASE__USER={{ index .Data.data "username" }} + CDE_API_DATABASE__PASSWORD={{ index .Data.data "password" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-s3: secrets/data/minio/apps/documentations + vault.hashicorp.com/agent-inject-template-cde-api-s3: |- + {{- with secret "secrets/data/minio/apps/documentations" -}} + CDE_API_S3_ENDPOINT={{ index .Data.data.client "endpoint" }} + CDE_API_S3_ACCESS_KEY={{ index .Data.data "access_key" }} + CDE_API_S3_SECRET_KEY={{ index .Data.data "secret_key" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-zeebe: secrets/data/apps/cde-api/zeebe + vault.hashicorp.com/agent-inject-template-cde-api-zeebe: |- + {{- with secret "secrets/data/apps/cde-api/zeebe" -}} + CDE_API_ZEEBE_GATEWAY_ADDRESS={{ index .Data.data "gateway_address" }} + CDE_API_ZEEBE_CLIENT_ID={{ index .Data.data "client_id" }} + CDE_API_ZEEBE_CLIENT_SECRET={{ index .Data.data "client_secret" }} + CDE_API_ZEEBE_AUTH_SERVER_URL={{ index .Data.data "auth_server_url" }} + {{- end -}} + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/base/cde-api-worker-s32d-publish-documents.yaml b/apps/documentations/base/cde-api-worker-s32d-publish-documents.yaml new file mode 100644 index 0000000..1597ef6 --- /dev/null +++ b/apps/documentations/base/cde-api-worker-s32d-publish-documents.yaml @@ -0,0 +1,260 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-publish-documents + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.9" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-publish-documents: + enabled: true + serviceAccount: + enabled: + _default: true + name: + _default: documentations-vault + deployment: + enabled: true + name: + _default: worker-s32d-publish-documents + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 100m + memory: + _default: 64Mi + command: + _default: ["/bin/sh", "-ec"] + args: + _default: + - | + set -a + [ -f /vault/secrets/cde-api-postgres ] && . /vault/secrets/cde-api-postgres + [ -f /vault/secrets/cde-api-s3 ] && . /vault/secrets/cde-api-s3 + [ -f /vault/secrets/cde-api-zeebe ] && . /vault/secrets/cde-api-zeebe + set +a + exec /opt/worker + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-publish-documents:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://backend-svc.eav.svc.cluster.local:80" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-publish-documents" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-publish-documents" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_WORKER_PUBLISH_DOCUMENTS_TIMEOUT_MIN + value: + _default: "10" + - name: CDE_API_S32D_WORKER_PUBLISH_DOCUMENTS_MAX_JOBS + value: + _default: "2" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://backend-svc.system-log.svc.cluster.local:80" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-svc.flows.svc.cluster.local:80" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://backend-svc.workspaces.svc.cluster.local:80" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + podAnnotations: + _default: + traffic.sidecar.istio.io/excludeOutboundPorts: "4317,4318,9411,8200" + vault.hashicorp.com/agent-init-first: "true" + vault.hashicorp.com/agent-inject: "true" + vault.hashicorp.com/agent-pre-populate-only: "true" + vault.hashicorp.com/auth-path: auth/kubernetes + vault.hashicorp.com/role: documentations + vault.hashicorp.com/agent-inject-secret-cde-api-postgres: secrets/data/apps/documentations/postgres + vault.hashicorp.com/agent-inject-template-cde-api-postgres: |- + {{- with secret "secrets/data/apps/documentations/postgres" -}} + CDE_API_DATABASE__HOST={{ index .Data.data "host" }} + CDE_API_DATABASE__PORT={{ index .Data.data "port" }} + CDE_API_DATABASE__NAME={{ index .Data.data "database" }} + CDE_API_DATABASE__USER={{ index .Data.data "username" }} + CDE_API_DATABASE__PASSWORD={{ index .Data.data "password" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-s3: secrets/data/minio/apps/documentations + vault.hashicorp.com/agent-inject-template-cde-api-s3: |- + {{- with secret "secrets/data/minio/apps/documentations" -}} + CDE_API_S3_ENDPOINT={{ index .Data.data.client "endpoint" }} + CDE_API_S3_ACCESS_KEY={{ index .Data.data "access_key" }} + CDE_API_S3_SECRET_KEY={{ index .Data.data "secret_key" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-zeebe: secrets/data/apps/cde-api/zeebe + vault.hashicorp.com/agent-inject-template-cde-api-zeebe: |- + {{- with secret "secrets/data/apps/cde-api/zeebe" -}} + CDE_API_ZEEBE_GATEWAY_ADDRESS={{ index .Data.data "gateway_address" }} + CDE_API_ZEEBE_CLIENT_ID={{ index .Data.data "client_id" }} + CDE_API_ZEEBE_CLIENT_SECRET={{ index .Data.data "client_secret" }} + CDE_API_ZEEBE_AUTH_SERVER_URL={{ index .Data.data "auth_server_url" }} + {{- end -}} + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/base/cde-api.yaml b/apps/documentations/base/cde-api.yaml new file mode 100644 index 0000000..9612bde --- /dev/null +++ b/apps/documentations/base/cde-api.yaml @@ -0,0 +1,442 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.9" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + cde-api: + enabled: true + serviceAccount: + enabled: + _default: true + name: + _default: documentations-vault + deployment: + enabled: true + name: + _default: cde-api + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + port: + _default: 8000 + resources: + requests: + cpu: + _default: 200m + memory: + _default: 256Mi + command: + _default: ["/bin/sh", "-ec"] + args: + _default: + - | + set -a + [ -f /vault/secrets/cde-api-postgres ] && . /vault/secrets/cde-api-postgres + [ -f /vault/secrets/cde-api-s3 ] && . /vault/secrets/cde-api-s3 + [ -f /vault/secrets/cde-api-zeebe ] && . /vault/secrets/cde-api-zeebe + [ -f /vault/secrets/cde-api-rabbitmq ] && . /vault/secrets/cde-api-rabbitmq + [ -f /vault/secrets/cde-api-django-auth ] && . /vault/secrets/cde-api-django-auth + set +a + [ -f /vault/secrets/cde-api-rsa-public ] && export CDE_API_PUBLIC_KEY="$(cat /vault/secrets/cde-api-rsa-public)" + exec /opt/main + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: true + name: + _default: cde-api + type: + _default: ClusterIP + port: + _default: 8000 + targetPort: + _default: 8000 + portName: + _default: http + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_RESOURCES_BASE_URL + value: + _default: "http://iams.iam.svc.cluster.local:8080" + - name: CDE_API_RESOURCES_TIMEOUT + value: + _default: "10s" + - name: CDE_API_APP_NAME + value: + _default: "cde-api" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "debug" + - name: CDE_API_HTTP_PORT + value: + _default: "8000" + - name: CDE_API_HTTP_READ_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_WRITE_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_IDLE_TIMEOUT + value: + _default: "120s" + - name: CDE_API_HTTP_READ_BUFFER_SIZE + value: + _default: "96" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_PUBLIC_LINK_HOST + value: + _default: "https://document-link-srx.wb.ru" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://backend-svc.processing.svc.cluster.local:80" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_RETRY_WAIT_MS + value: + _default: "500" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:80" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:80" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_RETRY_WAIT_MS + value: + _default: "1000" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://backend-svc.workspaces.svc.cluster.local:80" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://backend-svc.system-log.svc.cluster.local:80" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend-svc.django.svc.cluster.local:80" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_EAV_HOST + value: + _default: "http://backend-svc.eav.svc.cluster.local:80" + - name: CDE_API_EAV_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://backend-api-svc.documentations.svc.cluster.local:80" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_COPY_MAX_SYNC_WAIT_MS + value: + _default: "300000" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "10" + - name: CDE_API_DIAGNOSTICS_SLOW_OPERATION_THRESHOLD + value: + _default: "30s" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_REDIS__DB + value: + _default: "5" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "10" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "2" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_CONNECT_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S3_TLS_HANDSHAKE_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S32D_MAX_ARCHIVE_SIZE_BYTES + value: + _default: "1099511627776" + - name: CDE_API_S32D_MAX_FILES_COUNT + value: + _default: "500" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_USERS_BASE_URL + value: + _default: "http://backend-svc.django.svc.cluster.local:80" + - name: CDE_API_DISK_BUCKET_NAMESPACE + value: + _default: "documentations-prod" + - name: CDE_API_USERS_ORIGINATOR + value: + _default: "docs_prod" + - name: CDE_API_USERS_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_MAILER_RETRY_COUNT + value: + _default: "2" + - name: CDE_API_MAILER_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-svc.flows.svc.cluster.local:80" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_RABBITMQ__HOST + value: + _default: "rabbitmq.rabbitmq.svc.cluster.local" + - name: CDE_API_RABBITMQ__PORT + value: + _default: "5672" + podAnnotations: + _default: + traffic.sidecar.istio.io/excludeOutboundPorts: "4317,4318,9411,8200" + vault.hashicorp.com/agent-init-first: "true" + vault.hashicorp.com/agent-inject: "true" + vault.hashicorp.com/agent-pre-populate-only: "true" + vault.hashicorp.com/auth-path: auth/kubernetes + vault.hashicorp.com/role: documentations + vault.hashicorp.com/agent-inject-secret-cde-api-postgres: secrets/data/apps/documentations/postgres + vault.hashicorp.com/agent-inject-template-cde-api-postgres: |- + {{- with secret "secrets/data/apps/documentations/postgres" -}} + CDE_API_DATABASE__HOST={{ index .Data.data "host" }} + CDE_API_DATABASE__PORT={{ index .Data.data "port" }} + CDE_API_DATABASE__NAME={{ index .Data.data "database" }} + CDE_API_DATABASE__USER={{ index .Data.data "username" }} + CDE_API_DATABASE__PASSWORD={{ index .Data.data "password" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-s3: secrets/data/minio/apps/documentations + vault.hashicorp.com/agent-inject-template-cde-api-s3: |- + {{- with secret "secrets/data/minio/apps/documentations" -}} + CDE_API_S3_ENDPOINT={{ index .Data.data.client "endpoint" }} + CDE_API_S3_ACCESS_KEY={{ index .Data.data "access_key" }} + CDE_API_S3_SECRET_KEY={{ index .Data.data "secret_key" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-zeebe: secrets/data/apps/cde-api/zeebe + vault.hashicorp.com/agent-inject-template-cde-api-zeebe: |- + {{- with secret "secrets/data/apps/cde-api/zeebe" -}} + CDE_API_ZEEBE_GATEWAY_ADDRESS={{ index .Data.data "gateway_address" }} + CDE_API_ZEEBE_CLIENT_ID={{ index .Data.data "client_id" }} + CDE_API_ZEEBE_CLIENT_SECRET={{ index .Data.data "client_secret" }} + CDE_API_ZEEBE_AUTH_SERVER_URL={{ index .Data.data "auth_server_url" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-rabbitmq: secrets/data/rabbitmq/apps/cde + vault.hashicorp.com/agent-inject-template-cde-api-rabbitmq: |- + {{- with secret "secrets/data/rabbitmq/apps/cde" -}} + CDE_API_RABBITMQ__USER={{ index .Data.data "username" }} + CDE_API_RABBITMQ__PASSWORD={{ index .Data.data "password" }} + CDE_API_RABBITMQ__VHOST={{ index .Data.data "vhost" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-django-auth: secrets/data/vault/common/django_auth + vault.hashicorp.com/agent-inject-template-cde-api-django-auth: |- + {{- with secret "secrets/data/vault/common/django_auth" -}} + CDE_API_USERS_AUTH_TOKEN={{ index .Data.data "key" }} + {{- end -}} + vault.hashicorp.com/agent-inject-secret-cde-api-rsa-public: secrets/data/vault/common/rsa_keys + vault.hashicorp.com/agent-inject-template-cde-api-rsa-public: |- + {{- with secret "secrets/data/vault/common/rsa_keys" -}} + {{ index .Data.data "public_key" }} + {{- end -}} + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/base/kustomization.yaml b/apps/documentations/base/kustomization.yaml index a9e034f..1c7ea30 100644 --- a/apps/documentations/base/kustomization.yaml +++ b/apps/documentations/base/kustomization.yaml @@ -12,3 +12,11 @@ resources: - hasher.yaml - redis-deployment.yaml - redis-service.yaml + - tasks-execution-config.yaml + - cde-api.yaml + - cde-api-worker-s32d-create-upload.yaml + - cde-api-worker-s32d-process-workflows.yaml + - cde-api-worker-s32d-publish-documents.yaml + - cde-api-worker-s32d-handle-error.yaml + - cde-api-worker-copy.yaml + - cde-api-worker-move.yaml diff --git a/apps/documentations/base/tasks-execution-config.yaml b/apps/documentations/base/tasks-execution-config.yaml new file mode 100644 index 0000000..f4fa140 --- /dev/null +++ b/apps/documentations/base/tasks-execution-config.yaml @@ -0,0 +1,180 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: tasks-execution-config-documentation-v2 + namespace: documentations +data: + tasks-execution-config-documentation-v2.json: | + { + "bim_api_metadata_inserter": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_api_metadata_inserter_v2": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_api_metadata_inserter_v4": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_differ": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_updater": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "convert_to_potree": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "docx_to_pdf": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "dwg_to_geojson": { + "executor": "k8s", + "resources": { + "cpu_limits": "4", + "cpu_requests": "100m", + "memory_limits": "40Gi", + "memory_requests": "64Mi" + } + }, + "e57_to_las": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "ifc_converter_job": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "las_merge": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "mesh_optimizer": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "mesh_optimizer_v2": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "parsing_template": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "processing_converter_to_tiles": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "processing_create_colored_surface_from_geotiff": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "rendering_template": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "split_pdf_document": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "split_pdf_document_legacy": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "update_orthomosaic_data": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "web_hook_caller": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "xml_to_glb": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "document_converter": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "sparkjs_converter_wrapper": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + } + } diff --git a/apps/documentations/brusnika-prod/cde-api-worker-copy.yaml b/apps/documentations/brusnika-prod/cde-api-worker-copy.yaml new file mode 100644 index 0000000..0c877fc --- /dev/null +++ b/apps/documentations/brusnika-prod/cde-api-worker-copy.yaml @@ -0,0 +1,388 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-copy + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-copy: + enabled: true + deployment: + enabled: true + name: + _default: worker-copy + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 100m + memory: + _default: 64Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-copy:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-copy" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-copy" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:80" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://bim-api-service.bim.svc.cluster.local:8080" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://workspaces-service.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_ISSUES_SYNC_ENABLED + value: + _default: "false" + - name: CDE_API_ISSUES_BASE_URL + value: + _default: "http://issues-service.platform:8000" + - name: CDE_API_ISSUES_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_ISSUES_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_COPY_WORKER_JOBS + value: + _default: "" + - name: CDE_API_COPY_JOB_TIMEOUT_MINUTES + value: + _default: "30" + - name: CDE_API_COPY_STEP_PARALLELISM + value: + _default: "1" + - name: CDE_API_COPY_S3_PARALLELISM + value: + _default: "1" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "postgres-service" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "endpoint" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "access_key" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "secret_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + - name: CDE_API_RABBITMQ__HOST + secretName: + _default: "rabbitmq" + secretKey: + _default: "host" + - name: CDE_API_RABBITMQ__PORT + secretName: + _default: "rabbitmq" + secretKey: + _default: "port" + - name: CDE_API_RABBITMQ__USER + secretName: + _default: "rabbitmq" + secretKey: + _default: "username" + - name: CDE_API_RABBITMQ__PASSWORD + secretName: + _default: "rabbitmq" + secretKey: + _default: "password" + - name: CDE_API_RABBITMQ__VHOST + secretName: + _default: "rabbitmq" + secretKey: + _default: "vhost" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/brusnika-prod/cde-api-worker-move.yaml b/apps/documentations/brusnika-prod/cde-api-worker-move.yaml new file mode 100644 index 0000000..f8b8916 --- /dev/null +++ b/apps/documentations/brusnika-prod/cde-api-worker-move.yaml @@ -0,0 +1,370 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-move + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-move: + enabled: true + deployment: + enabled: true + name: + _default: worker-move + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 100m + memory: + _default: 64Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-move:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-move" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-move" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:80" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "10" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://bim-api-service.bim.svc.cluster.local:8080" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://workspaces-service.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_MOVE_WORKER_JOBS + value: + _default: "" + - name: CDE_API_MOVE_JOB_TIMEOUT_MINUTES + value: + _default: "30" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "postgres-service" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "endpoint" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "access_key" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "secret_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + - name: CDE_API_RABBITMQ__HOST + secretName: + _default: "rabbitmq" + secretKey: + _default: "host" + - name: CDE_API_RABBITMQ__PORT + secretName: + _default: "rabbitmq" + secretKey: + _default: "port" + - name: CDE_API_RABBITMQ__USER + secretName: + _default: "rabbitmq" + secretKey: + _default: "username" + - name: CDE_API_RABBITMQ__PASSWORD + secretName: + _default: "rabbitmq" + secretKey: + _default: "password" + - name: CDE_API_RABBITMQ__VHOST + secretName: + _default: "rabbitmq" + secretKey: + _default: "vhost" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/brusnika-prod/cde-api-worker-s32d-create-upload.yaml b/apps/documentations/brusnika-prod/cde-api-worker-s32d-create-upload.yaml new file mode 100644 index 0000000..b6b2001 --- /dev/null +++ b/apps/documentations/brusnika-prod/cde-api-worker-s32d-create-upload.yaml @@ -0,0 +1,258 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-create-upload + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-create-upload: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-create-upload + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 200m + memory: + _default: 256Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-create-upload:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-create-upload" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-create-upload" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_READERAT_BLOCK_SIZE_MB + value: + _default: "8" + - name: CDE_API_S32D_READERAT_CACHE_BLOCKS + value: + _default: "8" + - name: CDE_API_S32D_WORKER_CREATE_UPLOAD_TIMEOUT_MIN + value: + _default: "240" + - name: CDE_API_S32D_WORKER_CREATE_UPLOAD_MAX_JOBS + value: + _default: "2" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "postgres-service" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "endpoint" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "access_key" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "secret_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/brusnika-prod/cde-api-worker-s32d-handle-error.yaml b/apps/documentations/brusnika-prod/cde-api-worker-s32d-handle-error.yaml new file mode 100644 index 0000000..a2af1bf --- /dev/null +++ b/apps/documentations/brusnika-prod/cde-api-worker-s32d-handle-error.yaml @@ -0,0 +1,252 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-handle-error + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-handle-error: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-handle-error + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 50m + memory: + _default: 64Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-handle-error:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-handle-error" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-handle-error" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "2" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_WORKER_HANDLE_ERROR_TIMEOUT_MIN + value: + _default: "10" + - name: CDE_API_S32D_WORKER_HANDLE_ERROR_MAX_JOBS + value: + _default: "4" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "postgres-service" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "endpoint" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "access_key" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "secret_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/brusnika-prod/cde-api-worker-s32d-process-workflows.yaml b/apps/documentations/brusnika-prod/cde-api-worker-s32d-process-workflows.yaml new file mode 100644 index 0000000..6cd81ff --- /dev/null +++ b/apps/documentations/brusnika-prod/cde-api-worker-s32d-process-workflows.yaml @@ -0,0 +1,321 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-process-workflows + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-process-workflows: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-process-workflows + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 200m + memory: + _default: 256Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-process-workflows:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-process-workflows" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-process-workflows" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_WORKER_PROCESS_WORKFLOWS_TIMEOUT_MIN + value: + _default: "480" + - name: CDE_API_S32D_WORKER_PROCESS_WORKFLOWS_MAX_JOBS + value: + _default: "2" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://bim-api-service.bim.svc.cluster.local:8080" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "postgres-service" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "endpoint" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "access_key" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "secret_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/brusnika-prod/cde-api-worker-s32d-publish-documents.yaml b/apps/documentations/brusnika-prod/cde-api-worker-s32d-publish-documents.yaml new file mode 100644 index 0000000..0c347d6 --- /dev/null +++ b/apps/documentations/brusnika-prod/cde-api-worker-s32d-publish-documents.yaml @@ -0,0 +1,267 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-publish-documents + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-publish-documents: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-publish-documents + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 100m + memory: + _default: 64Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-publish-documents:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-publish-documents" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-publish-documents" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_WORKER_PUBLISH_DOCUMENTS_TIMEOUT_MIN + value: + _default: "10" + - name: CDE_API_S32D_WORKER_PUBLISH_DOCUMENTS_MAX_JOBS + value: + _default: "2" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:80" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://workspaces-service.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "postgres-service" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "endpoint" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "access_key" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "secret_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/brusnika-prod/cde-api.yaml b/apps/documentations/brusnika-prod/cde-api.yaml new file mode 100644 index 0000000..1b16961 --- /dev/null +++ b/apps/documentations/brusnika-prod/cde-api.yaml @@ -0,0 +1,458 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + cde-api: + enabled: true + deployment: + enabled: true + name: + _default: cde-api + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + port: + _default: 8000 + resources: + requests: + cpu: + _default: 200m + memory: + _default: 256Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: true + name: + _default: cde-api + type: + _default: ClusterIP + port: + _default: 8000 + targetPort: + _default: 8000 + portName: + _default: http + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_RESOURCES_BASE_URL + value: + _default: "http://iams.iam.svc.cluster.local:8080" + - name: CDE_API_RESOURCES_TIMEOUT + value: + _default: "10s" + - name: CDE_API_APP_NAME + value: + _default: "cde-api" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "debug" + - name: CDE_API_HTTP_PORT + value: + _default: "8000" + - name: CDE_API_HTTP_READ_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_WRITE_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_IDLE_TIMEOUT + value: + _default: "120s" + - name: CDE_API_HTTP_READ_BUFFER_SIZE + value: + _default: "96" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_PUBLIC_LINK_HOST + value: + _default: "https://document-link.cde.brusnika.ru" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_RETRY_WAIT_MS + value: + _default: "500" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://bim-api-service.bim.svc.cluster.local:8080" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_RETRY_WAIT_MS + value: + _default: "1000" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://workspaces-service.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:80" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_EAV_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_COPY_MAX_SYNC_WAIT_MS + value: + _default: "300000" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "10" + - name: CDE_API_DIAGNOSTICS_SLOW_OPERATION_THRESHOLD + value: + _default: "30s" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_REDIS__DB + value: + _default: "5" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "10" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "2" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_CONNECT_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S3_TLS_HANDSHAKE_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S32D_MAX_ARCHIVE_SIZE_BYTES + value: + _default: "1099511627776" + - name: CDE_API_S32D_MAX_FILES_COUNT + value: + _default: "500" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_USERS_BASE_URL + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_DISK_BUCKET_NAMESPACE + value: + _default: "documentations-prod" + - name: CDE_API_USERS_ORIGINATOR + value: + _default: "docs_prod" + - name: CDE_API_USERS_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_MAILER_RETRY_COUNT + value: + _default: "2" + - name: CDE_API_MAILER_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "postgres-service" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations" + secretEnvs: + - name: CDE_API_PUBLIC_KEY + secretName: + _default: "public-key" + secretKey: + _default: "key" + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "endpoint" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "access_key" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "hasher-s3-secret" + secretKey: + _default: "secret_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + - name: CDE_API_USERS_AUTH_TOKEN + secretName: + _default: "django-auth" + secretKey: + _default: "key" + - name: CDE_API_RABBITMQ__HOST + secretName: + _default: "rabbitmq" + secretKey: + _default: "host" + - name: CDE_API_RABBITMQ__PORT + secretName: + _default: "rabbitmq" + secretKey: + _default: "port" + - name: CDE_API_RABBITMQ__USER + secretName: + _default: "rabbitmq" + secretKey: + _default: "username" + - name: CDE_API_RABBITMQ__PASSWORD + secretName: + _default: "rabbitmq" + secretKey: + _default: "password" + - name: CDE_API_RABBITMQ__VHOST + secretName: + _default: "rabbitmq" + secretKey: + _default: "vhost" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/brusnika-prod/kustomization.yaml b/apps/documentations/brusnika-prod/kustomization.yaml index 4fbb3f9..7b4b4ab 100644 --- a/apps/documentations/brusnika-prod/kustomization.yaml +++ b/apps/documentations/brusnika-prod/kustomization.yaml @@ -8,3 +8,11 @@ resources: - api.yaml - filestream.yaml - hasher.yaml + - tasks-execution-config.yaml + - cde-api.yaml + - cde-api-worker-s32d-create-upload.yaml + - cde-api-worker-s32d-process-workflows.yaml + - cde-api-worker-s32d-publish-documents.yaml + - cde-api-worker-s32d-handle-error.yaml + - cde-api-worker-copy.yaml + - cde-api-worker-move.yaml diff --git a/apps/documentations/brusnika-prod/tasks-execution-config.yaml b/apps/documentations/brusnika-prod/tasks-execution-config.yaml new file mode 100644 index 0000000..f4fa140 --- /dev/null +++ b/apps/documentations/brusnika-prod/tasks-execution-config.yaml @@ -0,0 +1,180 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: tasks-execution-config-documentation-v2 + namespace: documentations +data: + tasks-execution-config-documentation-v2.json: | + { + "bim_api_metadata_inserter": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_api_metadata_inserter_v2": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_api_metadata_inserter_v4": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_differ": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_updater": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "convert_to_potree": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "docx_to_pdf": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "dwg_to_geojson": { + "executor": "k8s", + "resources": { + "cpu_limits": "4", + "cpu_requests": "100m", + "memory_limits": "40Gi", + "memory_requests": "64Mi" + } + }, + "e57_to_las": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "ifc_converter_job": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "las_merge": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "mesh_optimizer": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "mesh_optimizer_v2": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "parsing_template": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "processing_converter_to_tiles": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "processing_create_colored_surface_from_geotiff": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "rendering_template": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "split_pdf_document": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "split_pdf_document_legacy": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "update_orthomosaic_data": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "web_hook_caller": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "xml_to_glb": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "document_converter": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "sparkjs_converter_wrapper": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + } + } diff --git a/apps/documentations/brusnika-stage/cde-api-worker-copy.yaml b/apps/documentations/brusnika-stage/cde-api-worker-copy.yaml new file mode 100644 index 0000000..dc72222 --- /dev/null +++ b/apps/documentations/brusnika-stage/cde-api-worker-copy.yaml @@ -0,0 +1,388 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-copy + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-copy: + enabled: true + deployment: + enabled: true + name: + _default: worker-copy + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 100m + memory: + _default: 64Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-copy:stage_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-copy" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-copy" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:80" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-stage" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.generic:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "develop" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "stage" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "false" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "2000" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "2250" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "15000" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://workspaces-service.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_ISSUES_SYNC_ENABLED + value: + _default: "false" + - name: CDE_API_ISSUES_BASE_URL + value: + _default: "http://issues-service.platform:8000" + - name: CDE_API_ISSUES_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_ISSUES_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_COPY_WORKER_JOBS + value: + _default: "" + - name: CDE_API_COPY_JOB_TIMEOUT_MINUTES + value: + _default: "30" + - name: CDE_API_COPY_STEP_PARALLELISM + value: + _default: "1" + - name: CDE_API_COPY_S3_PARALLELISM + value: + _default: "1" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "192.168.2.45" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "yc-s3" + secretKey: + _default: "endpoint_url" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "key_id" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "access_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + - name: CDE_API_RABBITMQ__HOST + secretName: + _default: "rabbitmq" + secretKey: + _default: "host" + - name: CDE_API_RABBITMQ__PORT + secretName: + _default: "rabbitmq" + secretKey: + _default: "port" + - name: CDE_API_RABBITMQ__USER + secretName: + _default: "rabbitmq" + secretKey: + _default: "username" + - name: CDE_API_RABBITMQ__PASSWORD + secretName: + _default: "rabbitmq" + secretKey: + _default: "password" + - name: CDE_API_RABBITMQ__VHOST + secretName: + _default: "rabbitmq" + secretKey: + _default: "vhost" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/brusnika-stage/cde-api-worker-move.yaml b/apps/documentations/brusnika-stage/cde-api-worker-move.yaml new file mode 100644 index 0000000..f9b52c5 --- /dev/null +++ b/apps/documentations/brusnika-stage/cde-api-worker-move.yaml @@ -0,0 +1,370 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-move + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-move: + enabled: true + deployment: + enabled: true + name: + _default: worker-move + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 100m + memory: + _default: 64Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-move:stage_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-move" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-move" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:80" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "10" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-stage" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.generic:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "develop" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "stage" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "false" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "2000" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "2250" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "15000" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://workspaces-service.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_MOVE_WORKER_JOBS + value: + _default: "" + - name: CDE_API_MOVE_JOB_TIMEOUT_MINUTES + value: + _default: "30" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "192.168.2.45" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "yc-s3" + secretKey: + _default: "endpoint_url" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "key_id" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "access_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + - name: CDE_API_RABBITMQ__HOST + secretName: + _default: "rabbitmq" + secretKey: + _default: "host" + - name: CDE_API_RABBITMQ__PORT + secretName: + _default: "rabbitmq" + secretKey: + _default: "port" + - name: CDE_API_RABBITMQ__USER + secretName: + _default: "rabbitmq" + secretKey: + _default: "username" + - name: CDE_API_RABBITMQ__PASSWORD + secretName: + _default: "rabbitmq" + secretKey: + _default: "password" + - name: CDE_API_RABBITMQ__VHOST + secretName: + _default: "rabbitmq" + secretKey: + _default: "vhost" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/brusnika-stage/cde-api-worker-s32d-create-upload.yaml b/apps/documentations/brusnika-stage/cde-api-worker-s32d-create-upload.yaml new file mode 100644 index 0000000..2e5067f --- /dev/null +++ b/apps/documentations/brusnika-stage/cde-api-worker-s32d-create-upload.yaml @@ -0,0 +1,258 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-create-upload + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-create-upload: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-create-upload + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 200m + memory: + _default: 256Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-create-upload:stage_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-create-upload" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-create-upload" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-stage" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_READERAT_BLOCK_SIZE_MB + value: + _default: "8" + - name: CDE_API_S32D_READERAT_CACHE_BLOCKS + value: + _default: "8" + - name: CDE_API_S32D_WORKER_CREATE_UPLOAD_TIMEOUT_MIN + value: + _default: "240" + - name: CDE_API_S32D_WORKER_CREATE_UPLOAD_MAX_JOBS + value: + _default: "2" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.generic:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "192.168.2.45" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "yc-s3" + secretKey: + _default: "endpoint_url" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "key_id" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "access_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/brusnika-stage/cde-api-worker-s32d-handle-error.yaml b/apps/documentations/brusnika-stage/cde-api-worker-s32d-handle-error.yaml new file mode 100644 index 0000000..cd6ce75 --- /dev/null +++ b/apps/documentations/brusnika-stage/cde-api-worker-s32d-handle-error.yaml @@ -0,0 +1,252 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-handle-error + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-handle-error: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-handle-error + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 50m + memory: + _default: 64Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-handle-error:stage_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-handle-error" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-handle-error" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "2" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-stage" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_WORKER_HANDLE_ERROR_TIMEOUT_MIN + value: + _default: "10" + - name: CDE_API_S32D_WORKER_HANDLE_ERROR_MAX_JOBS + value: + _default: "4" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.generic:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "192.168.2.45" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "yc-s3" + secretKey: + _default: "endpoint_url" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "key_id" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "access_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/brusnika-stage/cde-api-worker-s32d-process-workflows.yaml b/apps/documentations/brusnika-stage/cde-api-worker-s32d-process-workflows.yaml new file mode 100644 index 0000000..786b1bb --- /dev/null +++ b/apps/documentations/brusnika-stage/cde-api-worker-s32d-process-workflows.yaml @@ -0,0 +1,321 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-process-workflows + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-process-workflows: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-process-workflows + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 200m + memory: + _default: 256Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-process-workflows:stage_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-process-workflows" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-process-workflows" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-stage" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_WORKER_PROCESS_WORKFLOWS_TIMEOUT_MIN + value: + _default: "480" + - name: CDE_API_S32D_WORKER_PROCESS_WORKFLOWS_MAX_JOBS + value: + _default: "1" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.generic:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "develop" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "stage" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "false" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "2000" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "2250" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "15000" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "192.168.2.45" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "yc-s3" + secretKey: + _default: "endpoint_url" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "key_id" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "access_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/brusnika-stage/cde-api-worker-s32d-publish-documents.yaml b/apps/documentations/brusnika-stage/cde-api-worker-s32d-publish-documents.yaml new file mode 100644 index 0000000..24546a0 --- /dev/null +++ b/apps/documentations/brusnika-stage/cde-api-worker-s32d-publish-documents.yaml @@ -0,0 +1,267 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-publish-documents + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-publish-documents: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-publish-documents + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 100m + memory: + _default: 64Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-publish-documents:stage_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-publish-documents" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-publish-documents" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-stage" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_WORKER_PUBLISH_DOCUMENTS_TIMEOUT_MIN + value: + _default: "10" + - name: CDE_API_S32D_WORKER_PUBLISH_DOCUMENTS_MAX_JOBS + value: + _default: "2" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.generic:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:80" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://workspaces-service.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "192.168.2.45" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "yc-s3" + secretKey: + _default: "endpoint_url" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "key_id" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "access_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/brusnika-stage/cde-api.yaml b/apps/documentations/brusnika-stage/cde-api.yaml new file mode 100644 index 0000000..a9d0138 --- /dev/null +++ b/apps/documentations/brusnika-stage/cde-api.yaml @@ -0,0 +1,458 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + cde-api: + enabled: true + deployment: + enabled: true + name: + _default: cde-api + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + port: + _default: 8000 + resources: + requests: + cpu: + _default: 200m + memory: + _default: 256Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api:stage_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: true + name: + _default: cde-api + type: + _default: ClusterIP + port: + _default: 8000 + targetPort: + _default: 8000 + portName: + _default: http + imagePullSecrets: + enabled: + _default: true + name: + _default: regcred + envs: + - name: CDE_API_RESOURCES_BASE_URL + value: + _default: "http://iams.platform.svc.cluster.local:8080" + - name: CDE_API_RESOURCES_TIMEOUT + value: + _default: "10s" + - name: CDE_API_APP_NAME + value: + _default: "cde-api" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "debug" + - name: CDE_API_HTTP_PORT + value: + _default: "8000" + - name: CDE_API_HTTP_READ_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_WRITE_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_IDLE_TIMEOUT + value: + _default: "120s" + - name: CDE_API_HTTP_READ_BUFFER_SIZE + value: + _default: "96" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_PUBLIC_LINK_HOST + value: + _default: "https://document-link.test.sarex.brusnika.tech" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_RETRY_WAIT_MS + value: + _default: "500" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_RETRY_WAIT_MS + value: + _default: "1000" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://workspaces-service.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:80" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "develop" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "stage" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "false" + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_EAV_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_COPY_MAX_SYNC_WAIT_MS + value: + _default: "300000" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "2000" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "2250" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "15000" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "2" + - name: CDE_API_DIAGNOSTICS_SLOW_OPERATION_THRESHOLD + value: + _default: "30s" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_REDIS__DB + value: + _default: "5" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "10" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "2" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-stage" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_CONNECT_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S3_TLS_HANDSHAKE_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S32D_MAX_ARCHIVE_SIZE_BYTES + value: + _default: "1099511627776" + - name: CDE_API_S32D_MAX_FILES_COUNT + value: + _default: "500" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_USERS_BASE_URL + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_DISK_BUCKET_NAMESPACE + value: + _default: "documentations-stage" + - name: CDE_API_USERS_ORIGINATOR + value: + _default: "docs_stage" + - name: CDE_API_USERS_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.generic:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_MAILER_RETRY_COUNT + value: + _default: "2" + - name: CDE_API_MAILER_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "192.168.2.45" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations" + secretEnvs: + - name: CDE_API_PUBLIC_KEY + secretName: + _default: "public-key" + secretKey: + _default: "key" + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "yc-s3" + secretKey: + _default: "endpoint_url" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "key_id" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "access_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + - name: CDE_API_USERS_AUTH_TOKEN + secretName: + _default: "django-auth" + secretKey: + _default: "key" + - name: CDE_API_RABBITMQ__HOST + secretName: + _default: "rabbitmq" + secretKey: + _default: "host" + - name: CDE_API_RABBITMQ__PORT + secretName: + _default: "rabbitmq" + secretKey: + _default: "port" + - name: CDE_API_RABBITMQ__USER + secretName: + _default: "rabbitmq" + secretKey: + _default: "username" + - name: CDE_API_RABBITMQ__PASSWORD + secretName: + _default: "rabbitmq" + secretKey: + _default: "password" + - name: CDE_API_RABBITMQ__VHOST + secretName: + _default: "rabbitmq" + secretKey: + _default: "vhost" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/brusnika-stage/kustomization.yaml b/apps/documentations/brusnika-stage/kustomization.yaml index 247514e..d96ba1d 100644 --- a/apps/documentations/brusnika-stage/kustomization.yaml +++ b/apps/documentations/brusnika-stage/kustomization.yaml @@ -9,3 +9,11 @@ resources: - filestream.yaml - hasher.yaml - pdf-markings-amqp.yaml + - tasks-execution-config.yaml + - cde-api.yaml + - cde-api-worker-s32d-create-upload.yaml + - cde-api-worker-s32d-process-workflows.yaml + - cde-api-worker-s32d-publish-documents.yaml + - cde-api-worker-s32d-handle-error.yaml + - cde-api-worker-copy.yaml + - cde-api-worker-move.yaml diff --git a/apps/documentations/brusnika-stage/tasks-execution-config.yaml b/apps/documentations/brusnika-stage/tasks-execution-config.yaml new file mode 100644 index 0000000..f4fa140 --- /dev/null +++ b/apps/documentations/brusnika-stage/tasks-execution-config.yaml @@ -0,0 +1,180 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: tasks-execution-config-documentation-v2 + namespace: documentations +data: + tasks-execution-config-documentation-v2.json: | + { + "bim_api_metadata_inserter": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_api_metadata_inserter_v2": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_api_metadata_inserter_v4": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_differ": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_updater": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "convert_to_potree": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "docx_to_pdf": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "dwg_to_geojson": { + "executor": "k8s", + "resources": { + "cpu_limits": "4", + "cpu_requests": "100m", + "memory_limits": "40Gi", + "memory_requests": "64Mi" + } + }, + "e57_to_las": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "ifc_converter_job": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "las_merge": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "mesh_optimizer": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "mesh_optimizer_v2": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "parsing_template": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "processing_converter_to_tiles": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "processing_create_colored_surface_from_geotiff": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "rendering_template": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "split_pdf_document": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "split_pdf_document_legacy": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "update_orthomosaic_data": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "web_hook_caller": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "xml_to_glb": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "document_converter": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "sparkjs_converter_wrapper": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + } + } diff --git a/apps/documentations/cde-api.CONFIGURATION.md b/apps/documentations/cde-api.CONFIGURATION.md new file mode 100644 index 0000000..f6057a0 --- /dev/null +++ b/apps/documentations/cde-api.CONFIGURATION.md @@ -0,0 +1,236 @@ +# Конфигурация cde-api и его воркеров + +Документ описывает переменные окружения `cde-api` и воркеров, развёрнутых в неймспейсе `documentations`. Манифесты — `base/cde-api*.yaml` (канонический вариант) и одноимённые файлы в оверлеях контуров. Источник значений — `cde-api/.helm/values.yaml`; значения в таблицах — из `base` (контуры переопределяют URL зависимостей, см. ниже). + +## Процессы + +| HelmRelease | Deployment | Образ | Service | Назначение | +| --- | --- | --- | --- | --- | +| `cde-api` | `cde-api` | `cde-api` | `cde-api:8000` | HTTP-API (`CDE_API_HTTP_PORT=8000`) | +| `cde-api-worker-s32d-create-upload` | `worker-s32d-create-upload` | `cde-api-worker-s32d-create-upload` | — | воркер S32D: создание и загрузка s3→disk | +| `cde-api-worker-s32d-process-workflows` | `worker-s32d-process-workflows` | `cde-api-worker-s32d-process-workflows` | — | воркер S32D: запуск workflow-обработки | +| `cde-api-worker-s32d-publish-documents` | `worker-s32d-publish-documents` | `cde-api-worker-s32d-publish-documents` | — | воркер S32D: публикация документов | +| `cde-api-worker-s32d-handle-error` | `worker-s32d-handle-error` | `cde-api-worker-s32d-handle-error` | — | воркер S32D: обработка ошибок | +| `cde-api-worker-copy` | `worker-copy` | `cde-api-worker-copy` | — | воркер копирования | +| `cde-api-worker-move` | `worker-move` | `cde-api-worker-move` | — | воркер перемещения | + +Не развёрнуты (в `universal-chart` нет поддержки `cronjobs`): `workspace-recovery`, `resource-id-backfill`, `sizer` — остаются в `cde-api/.helm`. + +Назначение воркеров выведено из имён образов и переменных `CDE_API_S32D_*`; точное поведение — в коде `cde-api/cmd`. + +## Способ конфигурирования + +- Только переменные окружения с префиксом `CDE_API_`; вложенные секции задаются через `__` (`CDE_API_DATABASE__HOST`). +- Несекретные значения — `envs` в HelmRelease. Секреты: в vault-контурах (`base`, а значит `sarex-contour`, `yc-k8s-test`, `d8-ugmk-prod`, `uralkal`, `vad`) — Vault Agent Injector (файлы в `/vault/secrets/`, которые `command: /bin/sh -ec` загружает в окружение перед `exec /opt/main` / `exec /opt/worker`, как у `documentations-api`); в остальных (`ugok`, `brusnika-*`, `wb`) — k8s `secretEnvs`. +- Для Vault-схемы в образы cde-api добавлен статический busybox (`/bin/sh`, `/bin/cat`) — см. `.docker/*/Dockerfile` в репозитории cde-api; без него контейнер не стартует. +- **Postgres, Valkey и S3 — общие с documentations** (отдельных ресурсов у cde-api нет): БД и креды те же, что у `documentations-api`; Valkey — внутрикластерный `redis:6379` (ns `documentations`, без TLS и пароля, DB 5); S3 — доступ MinIO из `secrets/data/minio/apps/documentations`. +- Файл `/etc/app/tasks_execution_config.json` (`CDE_API_WORKFLOWS_CONFIG_FILEPATH`) монтируется из ConfigMap `tasks-execution-config-documentation-v2` (`tasks-execution-config.yaml`; содержимое — `cde-api/.example.tasks_execution_config.json`, в реальных контурах заменить боевыми ресурсами задач). +- Значения по умолчанию в `values.yaml` источника — для stage; в iac всегда `global.env=_default`, поэтому здесь взяты prod-значения, а URL зависимостей — по конвенции соответствующего контура (из его `api.yaml`). + +## Секреты в Vault (vault-контуры) + +Инжектируются Vault Agent (role `documentations`, SA `documentations-vault`); каждый путь — отдельный файл `/vault/secrets/cde-api-<имя>`. + +| Файл | Путь Vault | Переменные | Процессы | +| --- | --- | --- | --- | +| `postgres` | `secrets/data/apps/documentations/postgres` (общий с documentations) | `CDE_API_DATABASE__HOST/PORT/NAME/USER/PASSWORD` | все | +| `s3` | `secrets/data/minio/apps/documentations` (общий) | `CDE_API_S3_ENDPOINT/ACCESS_KEY/SECRET_KEY` | все | +| `zeebe` | `secrets/data/apps/cde-api/zeebe` (**нужно создать**: `gateway_address`, `client_id`, `client_secret`, `auth_server_url`) | `CDE_API_ZEEBE_*` | все | +| `rabbitmq` | `secrets/data/rabbitmq/apps/cde` | `CDE_API_RABBITMQ__USER/PASSWORD/VHOST` (хост и порт — в envs) | api, copy, move | +| `django-auth` | `secrets/data/vault/common/django_auth` (ключ `key`) | `CDE_API_USERS_AUTH_TOKEN` | api | +| `rsa-public` | `secrets/data/vault/common/rsa_keys` (ключ `public_key`) | `CDE_API_PUBLIC_KEY` | api | + +Точный состав файлов у каждого процесса — в `podAnnotations` его HelmRelease. + +## Секреты k8s-контуров (`ugok`, `brusnika-*`, `wb`; ns `documentations`) + +Postgres — тот же хост/БД, что у `documentations-api` контура (литералы в envs), логин/пароль из его секрета (`postgres-secret` или `documentations-postgresql-secret`, ключи `username`/`password`); Valkey — `redis`. S3 и RabbitMQ — Secret'ы, которые в контуре уже используют hasher / pdf-markings / api; новый нужен только для Zeebe (`cde-api-zeebe-secret`). + +| Контур | S3 (endpoint / access / secret) | RabbitMQ | +| --- | --- | --- | +| `ugok` | `documentations-s3-secret`: `endpoint` / `access_key` / `secret_key` | `documentations-rabbitmq-secret`: `host, port, username, password, vhost` | +| `brusnika-prod` | `hasher-s3-secret`: `endpoint` / `access_key` / `secret_key` | `rabbitmq`: `host, port, username, password, vhost` | +| `brusnika-stage` | `yc-s3`: `endpoint_url` / `key_id` / `access_key` | `rabbitmq`: как выше | +| `wb` | `yc-s3`: `endpoint_url` / `key_id` / `access_key` | как в `wb/api.yaml`: host/port/vhost (`cde`) — литералы в envs, user/password — `hasher-rabbitmq-secret` (`user`, `password`) | + +Таблица ниже — для справки по `wb` (остальные контуры отличаются именами Secret'ов и ключей, см. таблицу выше): + +| Secret | Ключи | Переменные | +| --- | --- | --- | +| `public-key` | `key` | `CDE_API_PUBLIC_KEY` | +| `postgres-secret` | `username`, `password` | `CDE_API_DATABASE__USER`, `CDE_API_DATABASE__PASSWORD` | +| `yc-s3` | `endpoint_url`, `key_id`, `access_key` | `CDE_API_S3_ENDPOINT`, `CDE_API_S3_ACCESS_KEY`, `CDE_API_S3_SECRET_KEY` | +| `cde-api-zeebe-secret` | `gateway_address`, `client_id`, `client_secret`, `auth_server_url` | `CDE_API_ZEEBE_GATEWAY_ADDRESS`, `CDE_API_ZEEBE_CLIENT_ID`, `CDE_API_ZEEBE_CLIENT_SECRET`, `CDE_API_ZEEBE_AUTH_SERVER_URL` | +| `django-auth` | `key` | `CDE_API_USERS_AUTH_TOKEN` | +| `hasher-rabbitmq-secret` | `user`, `password` | `CDE_API_RABBITMQ__USER`, `CDE_API_RABBITMQ__PASSWORD` | + +## Переменные окружения + +Колонка «Процессы»: api, create-upload, process-workflows, publish-documents, handle-error, copy, move. Если значение различается между процессами, показано значение первого процесса из списка. + +| Переменная | Значение (base) | Процессы | +| --- | --- | --- | +| `CDE_API_APP_NAME` | `cde-api` *(различается)* | все | +| `CDE_API_BIMAPI_RETRY_COUNT` | `3` | api, process-workflows, copy, move | +| `CDE_API_BIMAPI_RETRY_WAIT_MS` | `1000` | api | +| `CDE_API_BIMAPI_TIMEOUT_MS` | `30000` | api, process-workflows, copy, move | +| `CDE_API_BIMAPI_TIMEOUT_V2_MS` | `300000` | api, process-workflows, copy, move | +| `CDE_API_BIMAPI_URL` | `http://backend-svc.bim.svc.cluster.local:80` | api, process-workflows, copy, move | +| `CDE_API_BIMAPI_V2_URL` | `http://backend-svc.bim.svc.cluster.local:80` | api, process-workflows, copy, move | +| `CDE_API_CONTAINER_REGISTRY` | `cr.yandex/crp3ccidau046kdj8g9q` | api, process-workflows, copy, move | +| `CDE_API_CONVERTED_PDF_TO_S3` | `true` | api, process-workflows, copy, move | +| `CDE_API_CONVERT_DWG_TO_GEOJSON` | `true` | api, process-workflows, copy, move | +| `CDE_API_CONVERT_DXF_TO_GEOJSON` | `true` | api, process-workflows, copy, move | +| `CDE_API_COPY_JOB_TIMEOUT_MINUTES` | `30` | copy | +| `CDE_API_COPY_MAX_SYNC_WAIT_MS` | `300000` | api | +| `CDE_API_COPY_S3_PARALLELISM` | `1` | copy | +| `CDE_API_COPY_STEP_PARALLELISM` | `1` | copy | +| `CDE_API_COPY_WORKER_JOBS` | `""` | copy | +| `CDE_API_DATABASE_HEALTH_CHECK_PERIOD` | `30s` | все | +| `CDE_API_DATABASE_MAX_CONN_IDLE_TIME` | `10m` | все | +| `CDE_API_DATABASE_MAX_CONN_LIFETIME` | `30m` | все | +| `CDE_API_DATABASE_OBSERVABILITY_ENABLE` | `true` | api | +| `CDE_API_DATABASE_POOL_SIZE` | `10` *(различается)* | все | +| `CDE_API_DATABASE__INSECURE_SKIP_TLS` | `false` | все | +| `CDE_API_DATABASE__SSLMODE` | `disable` | все | +| `CDE_API_DIAGNOSTICS_SLOW_OPERATION_THRESHOLD` | `30s` | api | +| `CDE_API_DISK_BUCKET_NAMESPACE` | `documentations-prod` | api | +| `CDE_API_DJANGO_HOST` | `http://backend-svc.django.svc.cluster.local:80` | api, process-workflows, copy, move | +| `CDE_API_DOCUMENTATION_V2_URL` | `http://backend-api-svc.documentations.svc.cluster.local:80` | api, process-workflows, copy, move | +| `CDE_API_EAV_HOST` | `http://backend-svc.eav.svc.cluster.local:80` | все | +| `CDE_API_EAV_TIMEOUT_MS` | `10000` | api | +| `CDE_API_ENVIRONMENT` | `production` | api, process-workflows, copy, move | +| `CDE_API_FLOWS_URL` | `http://backend-svc.flows.svc.cluster.local:80` | все | +| `CDE_API_HTTP_IDLE_TIMEOUT` | `120s` | api | +| `CDE_API_HTTP_PORT` | `8000` | api | +| `CDE_API_HTTP_READ_BUFFER_SIZE` | `96` | api | +| `CDE_API_HTTP_READ_TIMEOUT` | `0s` | api | +| `CDE_API_HTTP_WRITE_TIMEOUT` | `0s` | api | +| `CDE_API_INTERNAL_URL` | `http://cde-api.documentations:8000` | api, process-workflows, copy, move | +| `CDE_API_ISSUES_BASE_URL` | `http://issues-service.platform:8000` | copy | +| `CDE_API_ISSUES_RETRY_COUNT` | `3` | copy | +| `CDE_API_ISSUES_SYNC_ENABLED` | `false` | copy | +| `CDE_API_ISSUES_TIMEOUT_MS` | `30000` | copy | +| `CDE_API_LAST_MASTER_BIM` | `36311` | api, process-workflows, copy, move | +| `CDE_API_LAST_SLAVE_1_BIM` | `94015` | api, process-workflows, copy, move | +| `CDE_API_LAST_SLAVE_2_BIM` | `135771` | api, process-workflows, copy, move | +| `CDE_API_LOG_LEVEL` | `debug` *(различается)* | все | +| `CDE_API_MAILER_BASE_URL` | `http://mailer-service.mailer:8000` | все | +| `CDE_API_MAILER_FROM_EMAIL` | `noreply@sarex.io` | все | +| `CDE_API_MAILER_RETRY_COUNT` | `2` | api | +| `CDE_API_MAILER_TIMEOUT_MS` | `10000` | api | +| `CDE_API_MOVE_JOB_TIMEOUT_MINUTES` | `30` | move | +| `CDE_API_MOVE_WORKER_JOBS` | `""` | move | +| `CDE_API_OBSERVABILITY_ENABLE` | `true` | все | +| `CDE_API_OBSERVABILITY_HOST` | `signoz-otel-collector-external.signoz.svc.cluster.local` | все | +| `CDE_API_OBSERVABILITY_PORT` | `4317` | все | +| `CDE_API_OBSERVABILITY_SERVICE_NAME` | `worker-s32d-create-upload` *(различается)* | create-upload, process-workflows, publish-documents, handle-error, copy, move | +| `CDE_API_PUBLIC_LINK_HOST` | `https://document-link-srx.wb.ru` | api | +| `CDE_API_RABBITMQ__HASHER_EXCHANGE` | `hash.compute` | api, copy, move | +| `CDE_API_RABBITMQ__HASHER_ROUTING_KEY` | `hash.compute.normal` | api, copy, move | +| `CDE_API_RABBITMQ__HOST` | `rabbitmq.rabbitmq.svc.cluster.local` | api, copy, move | +| `CDE_API_RABBITMQ__MARKS_ROUTING_KEY` | `pdf_markings_input` | api, copy, move | +| `CDE_API_RABBITMQ__PORT` | `5672` | api, copy, move | +| `CDE_API_REDIS__DB` | `5` | api | +| `CDE_API_REDIS__DEFAULT_TTL_MINUTES` | `10` | все | +| `CDE_API_REDIS__DIAL_TIMEOUT_MS` | `5000` | все | +| `CDE_API_REDIS__HOST` | `redis` | все | +| `CDE_API_REDIS__MIN_IDLE_CONNS` | `2` *(различается)* | все | +| `CDE_API_REDIS__PERMISSION_CACHE_ENABLED` | `false` | все | +| `CDE_API_REDIS__POOL_SIZE` | `10` *(различается)* | все | +| `CDE_API_REDIS__PORT` | `6379` | все | +| `CDE_API_REDIS__READ_TIMEOUT_MS` | `3000` | все | +| `CDE_API_REDIS__SSL` | `false` | все | +| `CDE_API_REDIS__WRITE_TIMEOUT_MS` | `3000` | все | +| `CDE_API_RESOURCES_BASE_URL` | `http://iams.iam.svc.cluster.local:8080` | api | +| `CDE_API_RESOURCES_TIMEOUT` | `10s` | api | +| `CDE_API_S32D_MAX_ARCHIVE_SIZE_BYTES` | `1099511627776` | api | +| `CDE_API_S32D_MAX_FILES_COUNT` | `500` | api | +| `CDE_API_S32D_READERAT_BLOCK_SIZE_MB` | `8` | create-upload | +| `CDE_API_S32D_READERAT_CACHE_BLOCKS` | `8` | create-upload | +| `CDE_API_S32D_WORKER_CREATE_UPLOAD_MAX_JOBS` | `2` | create-upload | +| `CDE_API_S32D_WORKER_CREATE_UPLOAD_TIMEOUT_MIN` | `240` | create-upload | +| `CDE_API_S32D_WORKER_HANDLE_ERROR_MAX_JOBS` | `4` | handle-error | +| `CDE_API_S32D_WORKER_HANDLE_ERROR_TIMEOUT_MIN` | `10` | handle-error | +| `CDE_API_S32D_WORKER_PROCESS_WORKFLOWS_MAX_JOBS` | `2` | process-workflows | +| `CDE_API_S32D_WORKER_PROCESS_WORKFLOWS_TIMEOUT_MIN` | `480` | process-workflows | +| `CDE_API_S32D_WORKER_PUBLISH_DOCUMENTS_MAX_JOBS` | `2` | publish-documents | +| `CDE_API_S32D_WORKER_PUBLISH_DOCUMENTS_TIMEOUT_MIN` | `10` | publish-documents | +| `CDE_API_S3_BUCKET_LOOKUP` | `auto` | все | +| `CDE_API_S3_BUCKET_NAME` | `documentations-prod` | все | +| `CDE_API_S3_CHECK_BUCKET` | `false` | все | +| `CDE_API_S3_CONNECT_TIMEOUT` | `10s` | api | +| `CDE_API_S3_INSECURE_SKIP_TLS` | `true` | все | +| `CDE_API_S3_MAX_PART_SIZE` | `524288000` | все | +| `CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE` | `5368709120` | все | +| `CDE_API_S3_TLS_HANDSHAKE_TIMEOUT` | `10s` | api | +| `CDE_API_S3_UPLOAD_STALL_TIMEOUT` | `10m` | все | +| `CDE_API_S3_USE_SSL` | `true` | все | +| `CDE_API_SENTRY_DSN` | `""` | все | +| `CDE_API_SENTRY_ENVIRONMENT` | `""` | все | +| `CDE_API_SYSTEMLOG_BASE_URL` | `http://backend-svc.system-log.svc.cluster.local:80` | api, publish-documents, copy, move | +| `CDE_API_SYSTEMLOG_TIMEOUT_MS` | `10000` | api, publish-documents, copy, move | +| `CDE_API_TRANSMITTALS_URL` | `http://transmittal-service.transmittal.svc.cluster.local:80` | все | +| `CDE_API_USERS_BASE_URL` | `http://backend-svc.django.svc.cluster.local:80` | api | +| `CDE_API_USERS_ORIGINATOR` | `docs_prod` | api | +| `CDE_API_USERS_TIMEOUT_MS` | `10000` | api | +| `CDE_API_USE_BIMV1_FOR_BIMV2` | `true` | api, process-workflows, copy, move | +| `CDE_API_USE_BIM_INSERTER` | `true` | api, process-workflows, copy, move | +| `CDE_API_USE_LEGACY_BIM_FLOW` | `0` | api, process-workflows, copy, move | +| `CDE_API_WORKFLOWS_CONFIG_FILEPATH` | `/etc/app/tasks_execution_config.json` | все | +| `CDE_API_WORKFLOWS_IMAGES_VERSION` | `master` | api, process-workflows, copy, move | +| `CDE_API_WORKFLOW_BASE_URL` | `http://backend-svc.processing.svc.cluster.local:80` | api, process-workflows, copy, move | +| `CDE_API_WORKFLOW_RETRY_COUNT` | `3` | api, process-workflows, copy, move | +| `CDE_API_WORKFLOW_RETRY_WAIT_MS` | `500` | api | +| `CDE_API_WORKFLOW_TIMEOUT_MS` | `30000` | api, process-workflows, copy, move | +| `CDE_API_WORKSPACE_BASE_URL` | `http://backend-svc.workspaces.svc.cluster.local:80` | api, publish-documents, copy, move | +| `CDE_API_WORKSPACE_RETRY_COUNT` | `3` | api, publish-documents, copy, move | +| `CDE_API_WORKSPACE_TIMEOUT_MS` | `10000` | api, publish-documents, copy, move | +| `CDE_API_ZEEBE_USE_PLAINTEXT` | `true` | все | + +## Переменные из k8s-секретов (ugok, brusnika-*, wb) + +| Переменная | Secret / ключ | Процессы | +| --- | --- | --- | +| `CDE_API_DATABASE__PASSWORD` | `postgres-secret` / `password` | все | +| `CDE_API_DATABASE__USER` | `postgres-secret` / `username` | все | +| `CDE_API_PUBLIC_KEY` | `public-key` / `key` | api | +| `CDE_API_RABBITMQ__PASSWORD` | `hasher-rabbitmq-secret` / `password` | api, copy, move | +| `CDE_API_RABBITMQ__USER` | `hasher-rabbitmq-secret` / `user` | api, copy, move | +| `CDE_API_S3_ACCESS_KEY` | `yc-s3` / `key_id` | все | +| `CDE_API_S3_ENDPOINT` | `yc-s3` / `endpoint_url` | все | +| `CDE_API_S3_SECRET_KEY` | `yc-s3` / `access_key` | все | +| `CDE_API_USERS_AUTH_TOKEN` | `django-auth` / `key` | api | +| `CDE_API_ZEEBE_AUTH_SERVER_URL` | `cde-api-zeebe-secret` / `auth_server_url` | все | +| `CDE_API_ZEEBE_CLIENT_ID` | `cde-api-zeebe-secret` / `client_id` | все | +| `CDE_API_ZEEBE_CLIENT_SECRET` | `cde-api-zeebe-secret` / `client_secret` | все | +| `CDE_API_ZEEBE_GATEWAY_ADDRESS` | `cde-api-zeebe-secret` / `gateway_address` | все | + +## Различия по контурам + +От контура к контуру меняются URL зависимостей, внешний хост публичных ссылок и источник образов: + +| Контур | Тип оверлея | Что отличается | +| --- | --- | --- | +| `sarex-contour`, `yc-k8s-test` | наследуют `base` | ничего (значения `base`) | +| `d8-ugmk-prod`, `uralkal`, `vad` | патч `cde-api.yaml` поверх `base` | `CDE_API_PUBLIC_LINK_HOST` | +| `ugok` | полная копия HelmRelease, chart 0.1.9 | URL зависимостей (порты 8000/8080), образы из `10.4.10.187:80/library`, pull-secret `dockerhub` | +| `brusnika-prod`, `brusnika-stage` | полная копия, chart 0.1.7 | URL зависимостей; stage — профиль stage (`CDE_API_ENVIRONMENT=stage`, bucket `documentations-stage`) | +| `wb` | полная копия, chart 0.1.7 | URL зависимостей, `CDE_API_PUBLIC_LINK_HOST=https://document-link-srx.wb.ru` | + +Правка `base` на полные копии (ugok, brusnika-*, wb) не влияет. + +## Допущения и что нужно проверить + +- **Теги образов** (`prod_c9bc246`; у brusnika-stage `stage_c9bc246`, у ugok `ugok_c9bc246`) — placeholder на основе HEAD ветки develop cde-api; заменить на фактически собранные CI. +- `CDE_API_DJANGO_HOST` и `CDE_API_USERS_BASE_URL` в источнике — внешний хост (`https://lk.sarex.io`), здесь заменены внутренним адресом Django контура. Если cde-api использует их для внешних ссылок — вернуть внешний хост. +- `CDE_API_S3_BUCKET_NAME` для prod-контуров выставлен в `documentations-prod` по аналогии с `CDE_API_DISK_BUCKET_NAMESPACE`; в источнике задан только stage-бакет. +- `CDE_API_EAV_HOST`, `CDE_API_TRANSMITTALS_URL` выбраны по конвенции остальных приложений контура (`backend-svc.eav`, `eav-service.eav`, `transmittal-service.transmittal`); сверить с `inventory.yaml`. +- Sentry отключён (`CDE_API_SENTRY_DSN=""`): DSN источника ведёт во внешний SaaS. +- Реплики воркеров `create-upload` и `process-workflows` — `1` (в prod-конфиге cde-api — `0`). +- Порт: в источнике `deployment.port=8080` при `CDE_API_HTTP_PORT=8000` и `service.targetPort=8000`; здесь везде 8000. +- Общая с documentations БД: cde-api применяет свои миграции в той же базе — проверить отсутствие конфликтов имён таблиц/схемы и версий миграций (отдельная схема или префикс при необходимости). +- Общий Valkey без пароля и TLS (в источнике cde-api — управляемый Valkey с TLS и логином): подтвердить, что cde-api работает без `CDE_API_REDIS__USERNAME/PASSWORD`. DB 5 совпадает с `VALKEY_DB=5` у documentations-api (в stage так же). +- `secrets/data/apps/cde-api/zeebe` в Vault нужно создать; в k8s-контурах нужен только Secret `cde-api-zeebe-secret`; S3 и RabbitMQ используют существующие Secret'ы hasher / pdf-markings / api (таблица выше). Если в Secret'ах S3 другие права или бакет, чем нужны cde-api, заменить на отдельный. +- Значения секретов из Vault подставляются в окружение через `. file` без кавычек — как у `documentations-api`; пароли со спецсимволами shell ломают этот способ. +- Образы cde-api нужно пересобрать с добавленным busybox (проверка сборки Docker не выполнялась); без этого поды в vault-контурах не стартуют. diff --git a/apps/documentations/cde-api.ENDPOINTS.md b/apps/documentations/cde-api.ENDPOINTS.md new file mode 100644 index 0000000..1db478c --- /dev/null +++ b/apps/documentations/cde-api.ENDPOINTS.md @@ -0,0 +1,42 @@ +# Внешние зависимости cde-api и воркеров + +Документ перечисляет сервисы, к которым обращаются `cde-api` и воркеры, по их URL-переменным окружения (`apps/documentations/base/cde-api*.yaml`). Это карта зависимостей «кто кого зовёт»; конкретные пути запросов определяются клиентами в коде `cde-api` и здесь не разбираются. + +Значения в таблице — из `base`. В контурах с полными копиями (`ugok`, `brusnika-*`, `wb`) имена сервисов и порты другие — см. `*/cde-api.yaml` и раздел «Различия по контурам» в [cde-api.CONFIGURATION.md](cde-api.CONFIGURATION.md). + +## HTTP-зависимости + +| Переменная | Значение (base) | Сервис | Процессы | +| --- | --- | --- | --- | +| `CDE_API_RESOURCES_BASE_URL` | `http://iams.iam.svc.cluster.local:8080` | resources / iams | api | +| `CDE_API_WORKFLOW_BASE_URL` | `http://backend-svc.processing.svc.cluster.local:80` | workflows (processing) | api, process-workflows, copy, move | +| `CDE_API_BIMAPI_URL` | `http://backend-svc.bim.svc.cluster.local:80` | bim (v1) | api, process-workflows, copy, move | +| `CDE_API_BIMAPI_V2_URL` | `http://backend-svc.bim.svc.cluster.local:80` | bim (v2) | api, process-workflows, copy, move | +| `CDE_API_WORKSPACE_BASE_URL` | `http://backend-svc.workspaces.svc.cluster.local:80` | workspaces | api, publish-documents, copy, move | +| `CDE_API_SYSTEMLOG_BASE_URL` | `http://backend-svc.system-log.svc.cluster.local:80` | system-log | api, publish-documents, copy, move | +| `CDE_API_EAV_HOST` | `http://backend-svc.eav.svc.cluster.local:80` | eav | все | +| `CDE_API_DOCUMENTATION_V2_URL` | `http://backend-api-svc.documentations.svc.cluster.local:80` | documentations-api | api, process-workflows, copy, move | +| `CDE_API_INTERNAL_URL` | `http://cde-api.documentations:8000` | сам cde-api (service `cde-api`) | api, process-workflows, copy, move | +| `CDE_API_FLOWS_URL` | `http://backend-svc.flows.svc.cluster.local:80` | flows | api, create-upload, process-workflows, publish-documents, handle-error, copy, move | +| `CDE_API_TRANSMITTALS_URL` | `http://transmittal-service.transmittal.svc.cluster.local:80` | transmittal | api, create-upload, process-workflows, publish-documents, handle-error, copy, move | +| `CDE_API_MAILER_BASE_URL` | `http://mailer-service.mailer:8000` | mailer | api, create-upload, process-workflows, publish-documents, handle-error, copy, move | +| `CDE_API_DJANGO_HOST`, `CDE_API_USERS_BASE_URL` | `http://backend-svc.django.svc.cluster.local:80` | django (пользователи, `CDE_API_USERS_AUTH_TOKEN` из секрета `django-auth`) | api, process-workflows, copy, move; `CDE_API_USERS_BASE_URL` — только api | +| `CDE_API_PUBLIC_LINK_HOST` | зависит от контура | внешний хост document-link (используется для формирования ссылок) | api | + +Точный список процессов для каждой переменной — в [cde-api.CONFIGURATION.md](cde-api.CONFIGURATION.md). + +## Инфраструктурные зависимости + +| Зависимость | Откуда конфигурируется | Для чего | +| --- | --- | --- | +| PostgreSQL | Vault `secrets/data/apps/documentations/postgres` (k8s-контуры: хост/БД как у documentations-api + его секрет), `sslmode=disable` | **та же БД, что у documentations-api** | +| Valkey/Redis | `CDE_API_REDIS__HOST=redis`, `PORT=6379`, `DB=5`, без TLS и пароля | общий `redis` из ns documentations: кэш, курсоры, блокировки | +| S3 | Vault `secrets/data/minio/apps/documentations` (k8s-контуры: существующие Secret'ы контура, см. CONFIGURATION), бакет `CDE_API_S3_BUCKET_NAME` | хранение и multipart-загрузка файлов дисков | +| Zeebe (Camunda) | Vault `secrets/data/apps/cde-api/zeebe` (k8s-контуры: `cde-api-zeebe-secret`) | S32D-воркеры берут задачи из Zeebe | +| RabbitMQ | Vault `secrets/data/rabbitmq/apps/cde` (k8s-контуры: существующие Secret'ы контура), хост `rabbitmq.rabbitmq.svc.cluster.local:5672`; ключи `pdf_markings_input`, `hash.compute.normal`, обмен `hash.compute` | постановка задач на штампы (pdf-markings) и хэширование (hasher) | +| SigNoz OTLP | `CDE_API_OBSERVABILITY_HOST:4317` (`signoz-otel-collector-external.signoz`) | трейсы и метрики | +| Контейнерный реестр / workflows | `CDE_API_CONTAINER_REGISTRY`, `CDE_API_WORKFLOWS_IMAGES_VERSION=master`, файл `tasks_execution_config.json` | запуск задач обработки (k8s-jobs) | + +## Входящий трафик + +Service `cde-api:8000` (ns `documentations`) используется внутри кластера (в том числе самим cde-api через `CDE_API_INTERNAL_URL`). Маршруты в `infrastructure/istio-config/*` на этот сервис **не заведены**: существующие `cde-api-virt-service` относятся к легаси-сервису cde (`cde-svc.cde`) и не затрагиваются. Входящий контракт — [cde-api.openapi.yaml](cde-api.openapi.yaml) (копия `cde-api/docs/openapi/swagger.yaml`). diff --git a/apps/documentations/cde-api.env.example b/apps/documentations/cde-api.env.example new file mode 100644 index 0000000..0472444 --- /dev/null +++ b/apps/documentations/cde-api.env.example @@ -0,0 +1,118 @@ +# ============================================================================= +# cde-api и воркеры (cde-api-worker-*) — пример переменных окружения +# ============================================================================= +# Значения — из apps/documentations/base/cde-api.yaml; секреты оставлены пустыми. +# Префикс CDE_API_, вложенность через "__". Полный список по процессам — +# cde-api.CONFIGURATION.md. + +CDE_API_RESOURCES_BASE_URL=http://iams.iam.svc.cluster.local:8080 +CDE_API_RESOURCES_TIMEOUT=10s +CDE_API_APP_NAME=cde-api +CDE_API_SENTRY_DSN= +CDE_API_SENTRY_ENVIRONMENT= +CDE_API_LOG_LEVEL=debug +CDE_API_HTTP_PORT=8000 +CDE_API_HTTP_READ_TIMEOUT=0s +CDE_API_HTTP_WRITE_TIMEOUT=0s +CDE_API_HTTP_IDLE_TIMEOUT=120s +CDE_API_HTTP_READ_BUFFER_SIZE=96 +CDE_API_OBSERVABILITY_ENABLE=true +CDE_API_OBSERVABILITY_HOST=signoz-otel-collector-external.signoz.svc.cluster.local +CDE_API_OBSERVABILITY_PORT=4317 +CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE=5368709120 +CDE_API_S3_MAX_PART_SIZE=524288000 +CDE_API_S3_UPLOAD_STALL_TIMEOUT=10m +CDE_API_PUBLIC_LINK_HOST=https://document-link-srx.wb.ru +CDE_API_WORKFLOW_BASE_URL=http://backend-svc.processing.svc.cluster.local:80 +CDE_API_WORKFLOW_RETRY_COUNT=3 +CDE_API_WORKFLOW_RETRY_WAIT_MS=500 +CDE_API_WORKFLOW_TIMEOUT_MS=30000 +CDE_API_BIMAPI_URL=http://backend-svc.bim.svc.cluster.local:80 +CDE_API_BIMAPI_V2_URL=http://backend-svc.bim.svc.cluster.local:80 +CDE_API_BIMAPI_RETRY_COUNT=3 +CDE_API_BIMAPI_RETRY_WAIT_MS=1000 +CDE_API_BIMAPI_TIMEOUT_MS=30000 +CDE_API_BIMAPI_TIMEOUT_V2_MS=300000 +CDE_API_WORKSPACE_BASE_URL=http://backend-svc.workspaces.svc.cluster.local:80 +CDE_API_WORKSPACE_RETRY_COUNT=3 +CDE_API_WORKSPACE_TIMEOUT_MS=10000 +CDE_API_SYSTEMLOG_BASE_URL=http://backend-svc.system-log.svc.cluster.local:80 +CDE_API_SYSTEMLOG_TIMEOUT_MS=10000 +CDE_API_CONTAINER_REGISTRY=cr.yandex/crp3ccidau046kdj8g9q +CDE_API_WORKFLOWS_IMAGES_VERSION=master +CDE_API_DJANGO_HOST=http://backend-svc.django.svc.cluster.local:80 +CDE_API_ENVIRONMENT=production +CDE_API_CONVERTED_PDF_TO_S3=true +CDE_API_CONVERT_DXF_TO_GEOJSON=true +CDE_API_CONVERT_DWG_TO_GEOJSON=true +CDE_API_USE_BIMV1_FOR_BIMV2=true +CDE_API_EAV_HOST=http://backend-svc.eav.svc.cluster.local:80 +CDE_API_EAV_TIMEOUT_MS=10000 +CDE_API_DOCUMENTATION_V2_URL=http://backend-api-svc.documentations.svc.cluster.local:80 +CDE_API_INTERNAL_URL=http://cde-api.documentations:8000 +CDE_API_COPY_MAX_SYNC_WAIT_MS=300000 +CDE_API_LAST_MASTER_BIM=36311 +CDE_API_LAST_SLAVE_1_BIM=94015 +CDE_API_LAST_SLAVE_2_BIM=135771 +CDE_API_USE_BIM_INSERTER=true +CDE_API_USE_LEGACY_BIM_FLOW=0 +CDE_API_DATABASE_MAX_CONN_LIFETIME=30m +CDE_API_DATABASE_MAX_CONN_IDLE_TIME=10m +CDE_API_DATABASE_HEALTH_CHECK_PERIOD=30s +CDE_API_DATABASE_POOL_SIZE=10 +CDE_API_DIAGNOSTICS_SLOW_OPERATION_THRESHOLD=30s +CDE_API_DATABASE__SSLMODE=disable +CDE_API_DATABASE__INSECURE_SKIP_TLS=false +CDE_API_DATABASE_OBSERVABILITY_ENABLE=true +CDE_API_REDIS__DB=5 +CDE_API_REDIS__SSL=false +CDE_API_REDIS__POOL_SIZE=10 +CDE_API_REDIS__MIN_IDLE_CONNS=2 +CDE_API_REDIS__DIAL_TIMEOUT_MS=5000 +CDE_API_REDIS__READ_TIMEOUT_MS=3000 +CDE_API_REDIS__WRITE_TIMEOUT_MS=3000 +CDE_API_REDIS__DEFAULT_TTL_MINUTES=10 +CDE_API_REDIS__PERMISSION_CACHE_ENABLED=false +CDE_API_S3_BUCKET_NAME=documentations-prod +CDE_API_S3_USE_SSL=true +CDE_API_S3_BUCKET_LOOKUP=auto +CDE_API_S3_INSECURE_SKIP_TLS=true +CDE_API_S3_CHECK_BUCKET=false +CDE_API_S3_CONNECT_TIMEOUT=10s +CDE_API_S3_TLS_HANDSHAKE_TIMEOUT=10s +CDE_API_S32D_MAX_ARCHIVE_SIZE_BYTES=1099511627776 +CDE_API_S32D_MAX_FILES_COUNT=500 +CDE_API_ZEEBE_USE_PLAINTEXT=true +CDE_API_USERS_BASE_URL=http://backend-svc.django.svc.cluster.local:80 +CDE_API_DISK_BUCKET_NAMESPACE=documentations-prod +CDE_API_USERS_ORIGINATOR=docs_prod +CDE_API_USERS_TIMEOUT_MS=10000 +CDE_API_MAILER_BASE_URL=http://mailer-service.mailer:8000 +CDE_API_MAILER_FROM_EMAIL=noreply@sarex.io +CDE_API_MAILER_RETRY_COUNT=2 +CDE_API_MAILER_TIMEOUT_MS=10000 +CDE_API_FLOWS_URL=http://backend-svc.flows.svc.cluster.local:80 +CDE_API_TRANSMITTALS_URL=http://transmittal-service.transmittal.svc.cluster.local:80 +CDE_API_WORKFLOWS_CONFIG_FILEPATH=/etc/app/tasks_execution_config.json +CDE_API_RABBITMQ__MARKS_ROUTING_KEY=pdf_markings_input +CDE_API_RABBITMQ__HASHER_ROUTING_KEY=hash.compute.normal +CDE_API_RABBITMQ__HASHER_EXCHANGE=hash.compute +CDE_API_REDIS__HOST=redis +CDE_API_REDIS__PORT=6379 +CDE_API_RABBITMQ__HOST=rabbitmq.rabbitmq.svc.cluster.local +CDE_API_RABBITMQ__PORT=5672 + +# --- секреты (k8s Secret) --- +CDE_API_DATABASE__PASSWORD= +CDE_API_DATABASE__USER= +CDE_API_PUBLIC_KEY= +CDE_API_RABBITMQ__PASSWORD= +CDE_API_RABBITMQ__USER= +CDE_API_S3_ACCESS_KEY= +CDE_API_S3_ENDPOINT= +CDE_API_S3_SECRET_KEY= +CDE_API_USERS_AUTH_TOKEN= +CDE_API_ZEEBE_AUTH_SERVER_URL= +CDE_API_ZEEBE_CLIENT_ID= +CDE_API_ZEEBE_CLIENT_SECRET= +CDE_API_ZEEBE_GATEWAY_ADDRESS= diff --git a/apps/documentations/cde-api.openapi.yaml b/apps/documentations/cde-api.openapi.yaml new file mode 100644 index 0000000..1ee8a8f --- /dev/null +++ b/apps/documentations/cde-api.openapi.yaml @@ -0,0 +1,8341 @@ +definitions: + apperrors.APIError400: + properties: + code: + example: CDE-0004 + type: string + detail: + example: The request sent was invalid or malformed. Please review the request + parameters or body and try again. + type: string + type: + example: bad_request + type: string + type: object + apperrors.APIError401: + properties: + code: + example: CDE-0002 + type: string + detail: + example: Authentication is required or has failed. Please log in or provide + valid credentials. + type: string + type: + example: unauthorized + type: string + type: object + apperrors.APIError403: + properties: + code: + example: CDE-0003 + type: string + detail: + example: You do not have the necessary permissions to perform this action + or access this resource. + type: string + type: + example: permission_denied + type: string + type: object + apperrors.APIError404: + properties: + code: + example: CDE-0001 + type: string + detail: + example: The requested resource could not be found. Please verify the URL + or identifier and try again. + type: string + type: + example: not_found + type: string + type: object + apperrors.APIError409: + properties: + code: + example: CDE-0008 + type: string + detail: + example: A resource with the same identifier already exists. Please use a + different value or update the existing resource. + type: string + type: + example: conflict + type: string + type: object + apperrors.APIError422: + properties: + code: + example: CDE-0005 + type: string + detail: + example: One or more provided input values failed validation. Please review + the data and ensure it meets the required format or constraints. + type: string + type: + example: validation_error + type: string + validation_errors: + additionalProperties: + items: + type: string + type: array + type: object + type: object + apperrors.APIError502: + properties: + code: + example: CDE-0006 + type: string + detail: + example: An external service encountered an error. This is usually a temporary + issue, please try again later. + type: string + type: + example: external_service_error + type: string + type: object + attribute.ReplaceAttributeInput: + properties: + asset_id: + type: string + x-nullable: true + asset_level_id: + type: string + x-nullable: true + id: + type: integer + values: + items: {} + type: array + type: object + attribute.ReplaceRequest: + properties: + attributes: + description: Полный желаемый набор атрибутов. Отсутствующие атрибуты и атрибуты + с пустым values удаляются из активного набора; пустой список очищает все + атрибуты документа. + items: + $ref: '#/definitions/attribute.ReplaceAttributeInput' + type: array + type: object + binding.AuthorOutput: + properties: + first_name: + type: string + id: + type: integer + last_name: + type: string + type: object + binding.BindingItemOutput: + properties: + author: + $ref: '#/definitions/binding.AuthorOutput' + bundle_conversion_status: + type: string + changelog: + $ref: '#/definitions/binding.ChangelogOutput' + comment: + type: string + created_at: + type: string + deleted_at: + type: string + disk_id: + type: string + has_digital_signature: + type: boolean + has_qr_code: + type: boolean + has_stamp: + type: boolean + id: + type: string + is_canceled_qr: + type: boolean + is_document_allowed: + type: boolean + name: + type: string + path: + type: string + pretty_path: + type: string + reviews: + items: + $ref: '#/definitions/binding.ReviewOutput' + type: array + size: + type: integer + transmittals: + items: + $ref: '#/definitions/binding.TransmittalOutput' + type: array + type: + type: string + version: + type: integer + workflow_id: + type: string + type: object + binding.ChangelogOutput: + properties: + description: + type: string + "no": + type: string + type: object + binding.GetBindingsOutput: + properties: + binding_id: + type: string + items: + items: + $ref: '#/definitions/binding.BindingItemOutput' + type: array + type: object + binding.ReviewOutput: + properties: + review: + type: string + review_id: + type: integer + review_status: + type: string + status: + $ref: '#/definitions/binding.ReviewStatusOutput' + type: object + binding.ReviewStatusOutput: + properties: + id: + type: integer + key: + type: string + value: + type: string + type: object + binding.TransmittalOutput: + properties: + created_at: + type: string + id: + type: string + name: + type: string + status: + $ref: '#/definitions/binding.TransmittalStatusOutput' + type: object + binding.TransmittalStatusOutput: + properties: + id: + type: integer + name: + type: string + slug: + type: string + type: object + bundle.AddWorkflowRequest: + properties: + workflow_id: + type: string + required: + - workflow_id + type: object + bundle.ChangeAuthorRequest: + properties: + user_id: + type: integer + required: + - user_id + type: object + bundle.ChangelogRequest: + properties: + description: + type: string + "no": + type: string + type: object + bundle.CompleteUploadResponse: + properties: + id: + type: string + upload_status: + type: string + type: object + bundle.CreateRequest: + properties: + changelog: + $ref: '#/definitions/bundle.ChangelogRequest' + comment: + type: string + date: + type: string + disk_id: + type: string + keys: + items: + $ref: '#/definitions/bundle.DataSourceKeyRequest' + minItems: 1 + type: array + type: + type: string + required: + - disk_id + - keys + - type + type: object + bundle.CreateResponse: + properties: + created_at: + type: string + data_sources: + items: + $ref: '#/definitions/bundle.DataSourceResponse' + type: array + id: + type: string + type: + type: string + type: object + bundle.DataSourceKeyRequest: + properties: + key: + type: string + name: + maxLength: 250 + type: string + type: + enum: + - folder + - file + type: string + required: + - key + - name + - type + type: object + bundle.DataSourceResponse: + properties: + file_name: + type: string + id: + type: string + key: + type: string + type: + type: string + type: object + bundle.EnsureDataSourceRequest: + properties: + name: + type: string + type: + enum: + - file + - folder + type: string + required: + - type + type: object + bundle.EnsureDataSourceResponse: + properties: + created: + type: boolean + data_source_id: + type: string + type: object + bundle.PresignResponse: + properties: + bundle_id: + type: string + hash: + type: string + type: object + bundle.RestartContext: + properties: + attributes: + additionalProperties: {} + type: object + bucketName: + type: string + companyID: + type: integer + documentID: + type: integer + pdfDataSourceID: + type: string + tilesDataSourceID: + type: string + workflowID: + description: external workflows-service workflow id + type: string + workflowRecordID: + description: our workflow row id (workflows_uid param) + type: string + type: object + bundle.RestartResponse: + properties: + workflow_id: + type: string + type: object + bundle.UpdateAttributesOutput: + properties: + bundleID: + type: string + restart: + allOf: + - $ref: '#/definitions/bundle.RestartContext' + description: |- + Restart is non-nil when the type re-runs georeferencing and a workflow + exists: the service performs the restart (network) out of the transaction. + type: + type: string + workflowStatus: + type: string + type: object + bundle.UpdateAttributesRequest: + properties: + attributes: + additionalProperties: {} + type: object + type: object + bundle.UpdateCommentRequest: + properties: + comment: + $ref: '#/definitions/optional.Value-string' + type: object + bundle.markBundleRequest: + properties: + clean_bundle_id: + type: string + qrs: + items: + $ref: '#/definitions/bundle.markBundleRequestQR' + maxItems: 1 + type: array + signatures: + items: + $ref: '#/definitions/bundle.markBundleRequestSignature' + type: array + stamps: + items: + $ref: '#/definitions/bundle.markBundleRequestStamp' + type: array + use_existing_version: + type: boolean + type: object + bundle.markBundleRequestQR: + properties: + pages: + items: + type: integer + type: array + positioning_type: + type: integer + timestamp: + type: string + x_coordinate: + minimum: 0 + type: integer + y_coordinate: + minimum: 0 + type: integer + required: + - timestamp + type: object + bundle.markBundleRequestSignature: + properties: + company_name: + maxLength: 255 + type: string + header: + maxLength: 255 + type: string + mrpa_id: + type: string + owner: + maxLength: 255 + type: string + pages: + items: + type: integer + type: array + positioning_type: + type: integer + signature: + type: string + thumbprint: + maxLength: 255 + type: string + valid_from: + type: string + valid_to: + type: string + x_coordinate: + minimum: 0 + type: integer + y_coordinate: + minimum: 0 + type: integer + required: + - company_name + - header + - owner + - signature + - thumbprint + - valid_from + - valid_to + type: object + bundle.markBundleRequestStamp: + properties: + company_name: + maxLength: 255 + type: string + header: + maxLength: 255 + type: string + pages: + items: + type: integer + type: array + positioning_type: + type: integer + role_name: + maxLength: 255 + type: string + timestamp: + type: string + user_full_name: + maxLength: 255 + type: string + x_coordinate: + minimum: 0 + type: integer + y_coordinate: + minimum: 0 + type: integer + required: + - company_name + - header + - role_name + - timestamp + - user_full_name + type: object + bundle.markBundleResponse: + properties: + bundle_id: + type: string + type: object + bundle.markExternalBundleRequest: + properties: + clean_bundle_id: + type: string + created_by: + type: integer + qrs: + items: + $ref: '#/definitions/bundle.markBundleRequestQR' + maxItems: 1 + type: array + signatures: + items: + $ref: '#/definitions/bundle.markBundleRequestSignature' + type: array + stamps: + items: + $ref: '#/definitions/bundle.markBundleRequestStamp' + type: array + use_existing_version: + type: boolean + type: object + changelog.CreateRequest: + properties: + description: + type: string + "no": + type: string + type: object + changelog.Response: + properties: + author: + $ref: '#/definitions/document.AuthorOutput' + bundle_id: + type: string + created_at: + type: string + description: + type: string + "no": + type: string + updated_at: + type: string + type: object + changelog.UpdateRequest: + properties: + description: + description: Описание изменений; отсутствие поля сохраняет значение, null + очищает его. + type: string + x-nullable: true + "no": + type: string + type: object + changelog.UpdateResponse: + properties: + bundle_id: + type: string + created_at: + type: string + description: + type: string + "no": + type: string + updated_at: + type: string + type: object + copy.AddVersionOptions: + properties: + copy_issues: + description: Копирование замечаний не поддерживается; значение поля игнорируется. + type: boolean + publish: + type: boolean + set_copied_from: + description: Сохранять связь копии с исходной версией; по умолчанию true. + type: boolean + type: object + copy.FlatOptions: + properties: + copy_attributes: + type: boolean + copy_issues: + description: Копирование замечаний не поддерживается; значение поля игнорируется. + type: boolean + publish: + type: boolean + set_copied_from: + type: boolean + type: object + copy.LegacyBundle: + properties: + attributes: + additionalProperties: {} + type: object + bim_id: + type: integer + bundle_copied_from: + type: string + comment: + type: string + created_at: + type: string + data_sources: + items: + $ref: '#/definitions/copy.LegacyDataSource' + type: array + date: + type: string + document_id: + type: integer + has_digital_signature: + type: boolean + has_qr_code: + type: boolean + has_stamp: + type: boolean + id: + type: string + published_at: + type: string + size: + type: integer + type: + type: string + upload_status: + type: string + workflow_status: + type: string + type: object + copy.LegacyBundleCopyRequest: + properties: + document_name: + type: string + to_disk_document_id: + type: string + to_parent_document_id: + type: integer + use_source_bundle_as_copied_from: + type: boolean + type: object + copy.LegacyDataSource: + properties: + file_name: + type: string + format: + type: string + id: + type: string + key: + type: string + size: + type: integer + type: + type: string + type: object + copy.LegacyDocument: + properties: + bundles: + items: + $ref: '#/definitions/copy.LegacyBundle' + type: array + created_at: + type: string + dashboard_id: + type: integer + disk_id: + type: string + document_copied_from: + type: integer + files: + items: + type: integer + type: array + folders: + items: + type: integer + type: array + has_bindings: + type: boolean + has_digital_signature: + type: boolean + has_public_link: + type: boolean + has_qr_code: + type: boolean + has_stamp: + type: boolean + id: + type: integer + is_folder: + type: boolean + name: + type: string + path: + type: string + project_id: + type: integer + published_at: + type: string + type: + type: string + workspace_id: + type: string + type: object + copy.NewDocumentItem: + properties: + document_name: + type: string + source_bundle_id: + type: string + to_parent_document_id: + description: Папка, в которой будет создан новый документ. + type: integer + type: object + copy.NewDocumentRequest: + properties: + items: + items: + $ref: '#/definitions/copy.NewDocumentItem' + type: array + options: + $ref: '#/definitions/copy.FlatOptions' + type: object + copy.SelectionRequest: + properties: + document_ids: + items: + type: integer + type: array + options: + $ref: '#/definitions/copy.TreeOptions' + to_parent_document_id: + type: integer + type: object + copy.StartResponse: + properties: + operation_id: + type: string + type: object + copy.SubtreeRequest: + properties: + exclude: + items: + type: integer + type: array + options: + $ref: '#/definitions/copy.TreeOptions' + to_parent_document_id: + type: integer + type: object + copy.ToDocumentItem: + properties: + source_bundle_id: + type: string + target_document_id: + type: integer + type: object + copy.ToDocumentRequest: + properties: + items: + items: + $ref: '#/definitions/copy.ToDocumentItem' + type: array + options: + $ref: '#/definitions/copy.AddVersionOptions' + type: object + copy.TreeOptions: + properties: + conflict_policy: + default: skip + description: 'При совпадении имени: skip (по умолчанию, также при пустом значении) + — пропустить документ или папку со всем содержимым; as_copy — выбрать первое + свободное имя с суффиксом « copy», « copy 2», …, « copy 50». Если все варианты + заняты, элемент пропускается. При отсутствии совпадения имя сохраняется. + Существующие элементы не перезаписываются и не объединяются.' + enum: + - skip + - as_copy + example: as_copy + type: string + copy_attributes: + type: boolean + copy_issues: + description: Копирование замечаний не поддерживается; значение поля игнорируется. + type: boolean + publish: + type: boolean + set_copied_from: + type: boolean + type: object + disk.CreateInternalRequest: + properties: + admin_ids: + items: + type: integer + minItems: 1 + type: array + author_id: + type: integer + company_id: + type: integer + storage_type: + enum: + - sarex + type: string + required: + - admin_ids + - author_id + - company_id + - storage_type + type: object + disk.CreateInternalResponse: + properties: + admin_ids: + items: + type: integer + type: array + bucket_name: + type: string + company_id: + type: integer + document_id: + type: integer + id: + type: string + name: + type: string + storage_type: + type: string + type: object + disk.CreateRequest: + properties: + admin_ids: + items: + type: integer + minItems: 1 + type: array + company_id: + type: integer + storage_type: + enum: + - sarex + type: string + required: + - admin_ids + - company_id + - storage_type + type: object + document.AddBundleRequest: + properties: + bundle_id: + type: string + required: + - bundle_id + type: object + document.AddBundleResponse: + properties: + bundle_id: + type: string + document_id: + type: integer + document_name: + type: string + type: object + document.AttributeInput: + properties: + asset_id: + type: integer + asset_level_id: + type: integer + id: + type: integer + values: + items: {} + type: array + type: object + document.AuthorOutput: + properties: + first_name: + type: string + id: + type: integer + last_name: + type: string + type: object + document.BulkDeleteResponse: + properties: + deleted_ids: + items: + type: integer + type: array + skipped_ids: + items: + type: integer + type: array + type: object + document.BulkMovedRoot: + properties: + id: + type: integer + name: + type: string + parent_id: + type: integer + path: + type: string + type: object + document.BulkUpdatePathRequest: + properties: + document_ids: + items: + type: integer + maxItems: 301 + minItems: 1 + type: array + uniqueItems: true + parent_id: + type: integer + required: + - document_ids + - parent_id + type: object + document.BulkUpdatePathResponse: + properties: + roots: + items: + $ref: '#/definitions/document.BulkMovedRoot' + type: array + skipped_ids: + items: + type: integer + type: array + type: object + document.ChangeAuthorRequest: + properties: + include_bundles: + description: IncludeBundles also reassigns the author of every version of + the document. + type: boolean + user_id: + type: integer + required: + - user_id + type: object + document.CopyStructureRequest: + properties: + copy_permissions: + type: boolean + overwrite: + type: boolean + source_document_id: + type: integer + target_document_id: + type: integer + required: + - source_document_id + - target_document_id + type: object + document.CreateDashboardRequest: + properties: + dashboard_id: + type: integer + disk_id: + type: string + name: + maxLength: 100 + type: string + parent_id: + type: integer + required: + - dashboard_id + - disk_id + - name + - parent_id + type: object + document.CreateDashboardResponse: + properties: + dashboard_id: + type: integer + disk_id: + type: string + id: + type: integer + name: + type: string + path: + type: string + type: + type: string + type: object + document.CreateDocumentWorkspaceResponse: + properties: + workspace_id: + type: string + type: object + document.CreateInternalRequest: + properties: + author_id: + type: integer + name: + maxLength: 250 + type: string + parent_disk_id: + type: string + parent_doc_id: + type: integer + type: + enum: + - deviation + - abap + - c2c + - c2s + - pdf + - folder + - bim2bim + - ksg + type: string + required: + - author_id + - name + - parent_disk_id + - parent_doc_id + - type + type: object + document.CreateInternalResponse: + properties: + bundle: + $ref: '#/definitions/document.CreatedBundleResponse' + id: + type: integer + is_folder: + type: boolean + name: + type: string + path: + type: string + type: + type: string + workspace_id: + type: string + type: object + document.CreateRequest: + properties: + attributes: + items: + $ref: '#/definitions/document.AttributeInput' + type: array + bundle_id: + type: string + disk_id: + type: string + is_folder: + type: boolean + is_project: + type: boolean + name: + maxLength: 250 + type: string + parent_id: + type: integer + target_id: + type: integer + required: + - disk_id + - is_folder + - name + - parent_id + type: object + document.CreateResponse: + properties: + disk_id: + type: string + id: + type: integer + is_folder: + type: boolean + name: + type: string + path: + type: string + project_id: + type: integer + type: + type: string + workspace_id: + type: string + type: object + document.CreateWorkspaceNodeRequest: + properties: + disk_id: + type: string + documents: + items: + type: integer + type: array + name: + maxLength: 250 + type: string + parent_id: + type: integer + required: + - disk_id + - documents + - name + - parent_id + type: object + document.CreateWorkspaceNodeResponse: + properties: + disk_id: + type: string + id: + type: integer + name: + type: string + path: + type: string + type: + type: string + workspace_id: + type: string + type: object + document.CreatedBundleResponse: + properties: + data_sources: + items: + $ref: '#/definitions/document.CreatedDataSourceResponse' + type: array + id: + type: string + type: + type: string + upload_status: + type: string + type: object + document.CreatedDataSourceResponse: + properties: + id: + type: string + key: + type: string + name: + type: string + type: + type: string + type: object + document.DocumentType: + enum: + - workspace + - dashboard + - cloud + - bim + - bimv2 + - bimv3 + - project + - folder + - root + - surface + - pdf + - xlsx + - orthophoto + - dem + - dxf + - ksg + - docx + - dwg + - jpeg + - png + - gif + - heic + - docx_template + - docx_maf + - link + - doc + - rtf + - xls + - other_files + - deviation + - abap + - c2c + - c2s + - bim2bim + - glb + - gaussian_splats + type: string + x-enum-varnames: + - TypeWorkspace + - TypeDashboard + - TypeCloudLas + - TypeBIM + - TypeBIMV2 + - TypeBIMV3 + - TypeProject + - TypeFolder + - TypeRoot + - TypeSurface + - TypePDF + - TypeXlsx + - TypeOrthophoto + - TypeDem + - TypeDxf + - TypeKSG + - TypeDocx + - TypeDWG + - TypeJpeg + - TypePng + - TypeGif + - TypeHeic + - TypeDocxTemplate + - TypeDocxMAF + - TypeLink + - TypeDoc + - TypeRtf + - TypeXls + - TypeOtherFiles + - TypeDeviation + - TypeAbap + - TypeC2c + - TypeC2s + - TypeBim2Bim + - TypeGlb + - TypeGaussianSplats + document.FileTypeCount: + properties: + count: + type: integer + type: + type: string + type: object + document.FolderPropertiesOutput: + properties: + author: + $ref: '#/definitions/document.AuthorOutput' + created_at: + type: string + document_id: + type: integer + file_count: + type: integer + file_types: + items: + $ref: '#/definitions/document.FileTypeCount' + type: array + folder_count: + type: integer + size: + type: integer + type: object + document.RenameRequest: + properties: + name: + maxLength: 250 + type: string + required: + - name + type: object + document.RenameResponse: + properties: + id: + type: integer + name: + type: string + path: + type: string + type: object + document.ResolveRelativePathRequest: + properties: + document_ids: + items: + type: integer + minItems: 1 + type: array + relative_path: + type: string + should_folder_be_created: + type: boolean + user_service_accounts: + items: + type: string + minItems: 1 + type: array + required: + - document_ids + - user_service_accounts + type: object + document.ResolveRelativePathResponse: + properties: + result: + items: + $ref: '#/definitions/document.ResolvedDocumentPathResponse' + type: array + type: object + document.ResolvedDocumentPathResponse: + properties: + document_id: + type: integer + path: + type: string + type: object + document.SuperCreateBundleRequest: + properties: + date: + type: string + keys: + items: + $ref: '#/definitions/document.SuperCreateKeyRequest' + minItems: 1 + type: array + type: + type: string + required: + - keys + - type + type: object + document.SuperCreateKeyRequest: + properties: + key: + type: string + name: + maxLength: 250 + type: string + type: + enum: + - folder + - file + type: string + required: + - key + - name + - type + type: object + document.SuperCreateRequest: + properties: + author_id: + type: integer + bundles: + items: + $ref: '#/definitions/document.SuperCreateBundleRequest' + minItems: 1 + type: array + name: + maxLength: 250 + type: string + parent_doc_id: + type: integer + type: + type: string + required: + - author_id + - bundles + - name + - parent_doc_id + - type + type: object + document.SuperCreateResponse: + properties: + bundles: + items: + $ref: '#/definitions/document.CreatedBundleResponse' + type: array + id: + type: integer + name: + type: string + path: + type: string + type: + type: string + workspace_id: + type: string + type: object + document.TreeNodeOutput: + properties: + has_children: + type: boolean + id: + type: integer + is_folder: + type: boolean + name: + type: string + parent_id: + type: integer + path: + type: string + type: + type: string + type: object + document.TreeOutput: + properties: + documents: + items: + $ref: '#/definitions/document.TreeNodeOutput' + type: array + type: object + document.UpdatePathRequest: + properties: + parent_id: + type: integer + required: + - parent_id + type: object + document.UpdatePathResponse: + properties: + id: + type: integer + name: + type: string + parent_id: + type: integer + path: + type: string + type: object + link.CreateOutput: + properties: + created_at: + type: string + id: + type: integer + name: + type: string + path: + type: string + target_document_id: + type: integer + type: + $ref: '#/definitions/document.DocumentType' + type: object + link.CreateRequest: + properties: + disk_id: + type: string + parent_id: + type: integer + target_document_id: + type: integer + required: + - disk_id + - parent_id + - target_document_id + type: object + mark.deleteMarksRequest: + properties: + qr_ids: + items: + type: string + type: array + signature_ids: + items: + type: string + type: array + stamp_ids: + items: + type: string + type: array + type: object + mark.listMarksMarkResponse: + properties: + id: + type: string + pages: + items: + type: integer + type: array + timestamp: + type: string + x_coordinate: + type: integer + y_coordinate: + type: integer + type: object + mark.listMarksQRsResponse: + properties: + is_canceled: + type: boolean + mark: + $ref: '#/definitions/mark.listMarksMarkResponse' + type: object + mark.listMarksResponse: + properties: + qrs: + items: + $ref: '#/definitions/mark.listMarksQRsResponse' + type: array + signatures: + items: + $ref: '#/definitions/mark.listMarksSignaturesResponse' + type: array + stamps: + items: + $ref: '#/definitions/mark.listMarksStampsResponse' + type: array + type: object + mark.listMarksSignaturesResponse: + properties: + company_name: + type: string + header: + type: string + mark: + $ref: '#/definitions/mark.listMarksMarkResponse' + owner: + type: string + thumbprint: + type: string + user_full_name: + type: string + valid_from: + type: string + valid_to: + type: string + type: object + mark.listMarksStampsResponse: + properties: + company_name: + type: string + header: + type: string + mark: + $ref: '#/definitions/mark.listMarksMarkResponse' + role_name: + type: string + user_full_name: + type: string + type: object + move.ItemStatusResponse: + properties: + action: + type: string + document_id: + type: integer + name: + type: string + path: + type: string + reason: + type: string + status: + type: string + target_document_id: + description: Созданный или целевой документ копирования. + type: integer + type: object + move.MoveBundlesRequest: + properties: + bundle_ids: + items: + type: string + type: array + skip_copied_guard: + description: |- + Разрешить объединение версий, у которых есть копии на согласовании. + Завершение активного согласования может ссылаться на уже удалённый исходный документ. + type: boolean + type: object + move.MoveRequest: + properties: + items: + items: + $ref: '#/definitions/move.MoveRequestItem' + type: array + skip_copied_guard: + description: |- + Разрешить объединение версий, у которых есть копии на согласовании. + Завершение активного согласования может ссылаться на уже удалённый исходный документ. + type: boolean + to_parent_document_id: + type: integer + type: object + move.MoveRequestItem: + properties: + action: + description: 'Action: reparent (default) | as_copy | union | skip.' + type: string + document_id: + type: integer + new_document_name: + description: |- + NewDocumentName — опциональное переименование в рамках переноса (например, + когда целевая папка диктует шаблон наименования). reparent: документ + переносится под новым именем, конфликт в назначении проверяется по + финальному имени (новому, если задано, иначе текущему). union: пара для + объединения ищется по старому имени источника, объединение происходит под + ним, затем целевой документ переименовывается — новое имя должно + быть свободно (иначе 409). as_copy: новое имя служит базой для суффикса + « copy N». Переименование без смены папки — 400 (это задача /rename). + type: string + type: object + move.OperationListResponse: + properties: + operations: + items: + $ref: '#/definitions/move.StatusResponse' + type: array + type: object + move.ProgressResponse: + properties: + done: + type: integer + failed: + type: integer + in_progress: + type: integer + percent: + type: integer + skipped: + type: integer + total: + type: integer + type: object + move.RefreshDocument: + properties: + document_id: + type: integer + name: + type: string + role: + type: string + type: object + move.StartResponse: + properties: + operation_id: + type: string + type: object + move.StatusResponse: + properties: + cancel_requested: + type: boolean + created_at: + type: string + current_step: + type: string + error: + type: string + items: + items: + $ref: '#/definitions/move.ItemStatusResponse' + type: array + items_total: + description: |- + Число элементов, соответствующих фильтру; при переносе учитываются + только пропущенные элементы и ошибки. + type: integer + operation_id: + type: string + progress: + $ref: '#/definitions/move.ProgressResponse' + refresh_document_ids: + items: + $ref: '#/definitions/move.RefreshDocument' + type: array + status: + type: string + type: + type: string + updated_at: + type: string + type: object + optional.Value-string: + type: object + page.CreateRequest: + properties: + data_source: + type: string + id: + type: string + page_order: + type: integer + thumbnail: + type: string + required: + - data_source + - id + type: object + page.CreateResponse: + properties: + id: + type: string + page_order: + type: integer + thumbnail: + type: string + type: object + permission.SetRequest: + properties: + permissions: + description: 'Полный желаемый набор прав: отсутствующие права отзываются, + новые добавляются. Пустой список отзывает все прямые права получателя; унаследованные + права сохраняются.' + items: + type: string + type: array + service_account: + description: Получатель, чьи прямые права на документе нужно полностью заменить. + type: string + type: object + permissionmatrix.GrantOutput: + properties: + document_id: + type: integer + permissions: + items: + type: string + type: array + service_account: + type: string + type: object + permissionmatrix.GrantsQueryRequest: + properties: + document_ids: + items: + type: integer + minItems: 1 + type: array + service_accounts: + items: + type: string + minItems: 1 + type: array + required: + - document_ids + - service_accounts + type: object + permissionmatrix.GrantsQueryResponse: + properties: + grants: + items: + $ref: '#/definitions/permissionmatrix.GrantOutput' + type: array + type: object + publiclink.CreateOutput: + properties: + id: + type: string + public_link: + type: string + type: object + publiclink.CreateRequest: + properties: + bundle_id: + type: string + document_id: + type: integer + document_url: + type: string + expires_at: + type: string + is_auto_deletion_available: + type: boolean + version: + enum: + - latest + - specified + - latest_approved + type: string + required: + - version + type: object + publiclink.UpdateOutput: + properties: + bundle_id: + type: string + created_at: + type: string + created_by: + type: integer + document_id: + type: integer + expires_at: + type: string + id: + type: string + is_auto_deletion_available: + type: boolean + updated_at: + type: string + version: + type: string + type: object + publiclink.UpdateRequest: + properties: + bundle_id: + description: Идентификатор выбранной версии; null очищает значение. Для version=specified + у ссылки должна быть выбрана версия. + format: uuid + type: string + x-nullable: true + expires_at: + description: Срок действия ссылки; null делает ссылку бессрочной. + format: date-time + type: string + x-nullable: true + is_auto_deletion_available: + description: Разрешить автоматическое удаление; null равнозначен false. + type: boolean + x-nullable: true + version: + description: Выбор версии; отсутствие поля сохраняет текущее значение. + enum: + - latest + - specified + - latest_approved + type: string + type: object + s32d.CheckConflictsRequest: + properties: + disk_id: + type: string + items: + items: + $ref: '#/definitions/s32d.ConflictCheckItem' + minItems: 1 + type: array + required: + - disk_id + - items + type: object + s32d.CheckConflictsResponse: + properties: + conflicts: + items: + $ref: '#/definitions/s32d.ConflictResult' + type: array + no_conflict_count: + type: integer + type: object + s32d.ConflictCheckItem: + properties: + name: + maxLength: 250 + type: string + parent_id: + type: integer + required: + - name + - parent_id + type: object + s32d.ConflictResult: + properties: + existing_document_id: + type: integer + existing_document_type: + type: string + name: + type: string + parent_id: + type: integer + type: object + s32d.CreateSessionRequest: + properties: + archive_name: + maxLength: 500 + type: string + disk_id: + type: string + manifest: + $ref: '#/definitions/s32d.ManifestRequest' + required: + - archive_name + - disk_id + - manifest + type: object + s32d.CreateSessionResponse: + properties: + session_id: + type: string + type: object + s32d.InitMultipartResponse: + properties: + upload_id: + type: string + type: object + s32d.ListSessionsResponse: + properties: + items: + items: + $ref: '#/definitions/s32d.SessionListItemResponse' + type: array + total: + type: integer + type: object + s32d.ManifestAttributeRequest: + properties: + asset_id: + type: integer + asset_level_id: + type: integer + id: + type: integer + values: + items: {} + type: array + required: + - id + type: object + s32d.ManifestBundleRequest: + properties: + changelog: + $ref: '#/definitions/s32d.ManifestChangelogRequest' + comment: + type: string + keys: + items: + $ref: '#/definitions/s32d.ManifestKeyRequest' + minItems: 1 + type: array + type: + type: string + required: + - keys + - type + type: object + s32d.ManifestChangelogRequest: + properties: + description: + maxLength: 1000 + type: string + "no": + type: string + required: + - "no" + type: object + s32d.ManifestDocumentRequest: + properties: + attributes: + items: + $ref: '#/definitions/s32d.ManifestAttributeRequest' + type: array + name: + maxLength: 250 + type: string + required: + - name + type: object + s32d.ManifestItemRequest: + properties: + action: + enum: + - create + - add_bundle + type: string + bundle: + $ref: '#/definitions/s32d.ManifestBundleRequest' + document: + $ref: '#/definitions/s32d.ManifestDocumentRequest' + existing_document_id: + type: integer + parent_id: + type: integer + s32d_file_path: + type: string + required: + - action + - bundle + - parent_id + - s32d_file_path + type: object + s32d.ManifestKeyRequest: + properties: + key: + type: string + name: + maxLength: 250 + type: string + type: + enum: + - folder + - file + type: string + required: + - key + - name + - type + type: object + s32d.ManifestRequest: + properties: + items: + items: + $ref: '#/definitions/s32d.ManifestItemRequest' + minItems: 1 + type: array + required: + - items + type: object + s32d.ProcessSessionResponse: + properties: + session_id: + type: string + type: object + s32d.ProgressOutput: + properties: + published_files: + type: integer + total_files: + type: integer + uploaded_files: + type: integer + workflows_completed: + type: integer + type: object + s32d.SessionListItemResponse: + properties: + archive_name: + type: string + completed_at: + type: string + created_at: + type: string + current_step: + type: string + errors: + items: + type: string + type: array + progress: + $ref: '#/definitions/s32d.ProgressOutput' + session_id: + type: string + status: + type: string + type: object + s32d.SessionStatusResponse: + properties: + archive_name: + type: string + completed_at: + type: string + created_at: + type: string + current_step: + type: string + errors: + items: + type: string + type: array + progress: + $ref: '#/definitions/s32d.ProgressOutput' + session_id: + type: string + status: + type: string + type: object + s32d.UploadArchiveResponse: + properties: + archive_size: + type: integer + type: object + s32d.UploadPartResponse: + properties: + etag: + type: string + part_number: + type: integer + type: object + sizer.getLatestStatResponse: + properties: + created_at: + type: string + run_id: + type: string + stat: + items: + $ref: '#/definitions/sizer.getLatestStatResponseStat' + type: array + type: object + sizer.getLatestStatResponseStat: + properties: + count: + type: integer + total_size: + type: integer + type: + type: string + user_size: + type: integer + type: object + upload.MultipartFinishedResponse: + properties: + status: + example: completed + type: string + upload_id: + type: string + type: object + upload.StartMultipartInternalResponse: + properties: + upload_id: + type: string + upload_url: + type: string + type: object + upload.StartMultipartResponse: + properties: + bundle_id: + type: string + key: + example: pdf + type: string + upload_id: + type: string + upload_url: + type: string + type: object + upload.UploadPartResponse: + properties: + etag: + type: string + part_number: + type: integer + size: + type: integer + status: + example: uploaded + type: string + upload_id: + type: string + type: object + upload.UploadSingleResponse: + properties: + bundle_id: + type: string + filename: + type: string + key: + example: pdf + type: string + size: + type: integer + status: + example: uploaded + type: string + type: object +info: + contact: {} + description: API для работы с документами, версиями, файлами, правами доступа и + публичными ссылками. + title: cde-api + version: "1.0" +paths: + /app/v1/async-operations: + get: + description: Возвращает активные и недавно завершённые операции копирования + и переноса. Доступны только собственные операции пользователя. + parameters: + - description: 'Фильтр по типу: copy|move|move_bundles' + in: query + name: type + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/move.OperationListResponse' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + summary: Получить список операций + tags: + - async-operations + /app/v1/async-operations/{id}: + get: + description: Возвращает состояние, прогресс и результаты копирования или переноса. + Доступно только создателю операции. + parameters: + - description: UUID операции + in: path + name: id + required: true + type: string + - description: 'copy: размер страницы items (default 1000)' + in: query + name: items_limit + type: integer + - description: 'copy: смещение' + in: query + name: items_offset + type: integer + - description: 'copy: фильтр pending|running|done|skipped|failed' + in: query + name: items_status + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/move.StatusResponse' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Получить состояние операции + tags: + - async-operations + /app/v1/async-operations/{id}/cancel: + post: + description: Запрашивает отмену копирования или переноса. Уже выполненные изменения + не откатываются. Если копирование достигло этапа публикации результата, возвращается + 409. Доступно только создателю операции. + parameters: + - description: UUID операции + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "202": + description: Отмена запрошена + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Отменить операцию + tags: + - async-operations + /app/v1/bundles/: + post: + consumes: + - application/json + description: Создаёт версию и возвращает параметры для загрузки её файлов. Диск + должен принадлежать одной из компаний пользователя, указанных в токене. + parameters: + - description: Параметры версии документа + in: body + name: request + required: true + schema: + $ref: '#/definitions/bundle.CreateRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.CreateResponse' + "400": + description: Некорректное тело / диск не найден + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "422": + description: Ключи не подходят типу версии / расширение имени + schema: + $ref: '#/definitions/apperrors.APIError422' + summary: Создать версию документа + tags: + - bundles + /app/v1/bundles/{bundle_id}: + delete: + description: Мягкое удаление версии; последнюю версию документа удалить нельзя. + parameters: + - description: UUID бандла + in: path + name: bundle_id + required: true + type: string + produces: + - application/json + responses: + "204": + description: Удалён + "400": + description: Не загружен / без документа / последняя версия + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Удалить бандл + tags: + - bundles + /app/v1/bundles/{bundle_id}/{key}/upload_multipart: + post: + description: Возвращает идентификатор загрузки и адрес для отправки частей в + той же версии API. Диск должен принадлежать одной из компаний пользователя, + указанных в токене. + parameters: + - description: Идентификатор версии документа + in: path + name: bundle_id + required: true + type: string + - description: Ключ файла версии + in: path + name: key + required: true + type: string + - description: Относительный путь файла в наборе файлов версии; только для типа + folder + in: query + name: path + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.StartMultipartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Начать загрузку файла по частям + tags: + - uploads + /app/v1/bundles/{bundle_id}/{key}/upload_single: + post: + consumes: + - application/octet-stream + description: 'Файл передаётся в теле запроса с Content-Type: application/octet-stream + и Content-Length. Формат multipart/form-data не поддерживается. Диск должен + принадлежать одной из компаний пользователя, указанных в токене.' + parameters: + - description: Идентификатор версии документа + in: path + name: bundle_id + required: true + type: string + - description: Ключ файла версии + in: path + name: key + required: true + type: string + - description: Относительный путь файла в наборе файлов версии; только для типа + folder + in: query + name: path + type: string + - description: Имя файла + in: query + name: filename + type: string + - description: Байты файла в теле запроса, без JSON-обёртки и кодирования Base64 + in: body + name: content + required: true + schema: + type: string + - description: Размер тела запроса в байтах + format: int64 + in: header + minimum: 1 + name: Content-Length + required: true + type: integer + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.UploadSingleResponse' + "400": + description: Форма вместо raw / нет Content-Length + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Загрузить файл версии одним запросом + tags: + - uploads + /app/v1/bundles/{bundle_id}/bindings: + get: + parameters: + - description: UUID бандла + in: path + name: bundle_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/binding.GetBindingsOutput' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Связи s32d бандла + tags: + - bundles + /app/v1/bundles/{bundle_id}/cancel_qr: + post: + description: Аннулирует QR-код указанной версии. Требуется право нанесения QR-кода + или администрирования документа; также доступно администратору диска. + parameters: + - description: Идентификатор версии документа + in: path + name: bundle_id + required: true + type: string + produces: + - application/json + responses: + "204": + description: Аннулирован + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Аннулировать QR-код версии документа + tags: + - bundles + /app/v1/bundles/{bundle_id}/changelog/: + patch: + consumes: + - application/json + description: Обновляет номер и описание изменений. Отсутствующее description + сохраняется, null очищает его. Требуется право редактирования или администрирования + документа; также доступно администратору диска. + parameters: + - description: Идентификатор версии документа + in: path + name: bundle_id + required: true + type: string + - description: Изменения + in: body + name: request + required: true + schema: + $ref: '#/definitions/changelog.UpdateRequest' + produces: + - application/json + responses: + "200": + description: Обновлённое описание изменений + schema: + $ref: '#/definitions/changelog.UpdateResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "422": + description: Unprocessable Entity + schema: + $ref: '#/definitions/apperrors.APIError422' + summary: Изменить описание изменений версии + tags: + - changelogs + post: + consumes: + - application/json + description: Сохраняет номер и описание изменений версии. Повторное создание + возвращает 409. Требуется право редактирования или администрирования документа; + также доступно администратору диска. + parameters: + - description: Идентификатор версии документа + in: path + name: bundle_id + required: true + type: string + - description: Номер и описание + in: body + name: request + required: true + schema: + $ref: '#/definitions/changelog.CreateRequest' + produces: + - application/json + responses: + "201": + description: Описание изменений версии + schema: + $ref: '#/definitions/changelog.Response' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + "422": + description: Unprocessable Entity + schema: + $ref: '#/definitions/apperrors.APIError422' + summary: Добавить описание изменений версии + tags: + - changelogs + /app/v1/bundles/{bundle_id}/comment: + patch: + consumes: + - application/json + description: 'Tri-state тело: строка — установить, null — очистить, отсутствие + поля — 400.' + parameters: + - description: UUID бандла + in: path + name: bundle_id + required: true + type: string + - description: Комментарий + in: body + name: request + required: true + schema: + $ref: '#/definitions/bundle.UpdateCommentRequest' + produces: + - application/json + responses: + "204": + description: Обновлён + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Изменить комментарий бандла + tags: + - bundles + /app/v1/bundles/{bundle_id}/mark: + post: + consumes: + - application/json + description: Создаёт новую промаркированную версию по чистому бандлу и определениям + марок. + parameters: + - description: UUID бандла + in: path + name: bundle_id + required: true + type: string + - description: Определения марок + in: body + name: request + required: true + schema: + $ref: '#/definitions/bundle.markBundleRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.markBundleResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Нанести марки (QR/штамп/подпись) + tags: + - bundles + /app/v1/bundles/{bundle_id}/presign: + get: + description: Возвращает хеш файла версии для формирования электронной подписи. + Требуется право электронной подписи или администрирования документа; также + доступно администратору диска. + parameters: + - description: Идентификатор формата UUID версии документа + in: path + name: bundle_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.PresignResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Подготовить версию к электронной подписи + tags: + - bundles + /app/v1/bundles/{bundle_id}/regenerate_marks: + put: + description: Замещает текущую печатную версию на новую, сгенерированную по состоянию + из базы данных + parameters: + - description: UUID бандла + in: path + name: bundle_id + required: true + type: string + responses: + "204": + description: No Content + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Перегенерация печатной версии документа + tags: + - bundles + /app/v1/bundles/{bundle_id}/restart: + post: + description: Переигрывает упавшую задачу workflow либо стартует пайплайн, если + workflow ещё нет. + parameters: + - description: UUID бандла + in: path + name: bundle_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.RestartResponse' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Уже выполняется (CDE-0011) / завершена (CDE-0012) / нечего + перезапускать (CDE-0013) + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Перезапустить обработку + tags: + - bundles + /app/v1/bundles/{bundle_id}/upload_finish: + post: + description: Подтверждает завершение загрузки всех файлов версии. Диск должен + принадлежать одной из компаний пользователя, указанных в токене. + parameters: + - description: Идентификатор версии документа + in: path + name: bundle_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.CompleteUploadResponse' + "400": + description: Некорректный bundle_id / контент не залит + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Версия не найдена + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Завершить загрузку версии документа + tags: + - bundles + /app/v1/bundles/copy: + post: + consumes: + - application/json + description: |- + Создаёт новый документ на основе выбранной версии. Возвращает идентификатор операции; Prefer: wait заголовок позволяет дождаться результата в течение выбранного количества секунд в том же запросе, вместо того, чтобы отслеживать статус через API асинхронных операций. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.NewDocumentRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Конфликт имён в назначении + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Скопировать версию в новый документ + tags: + - copy + /app/v1/bundles/copy-to-document: + post: + consumes: + - application/json + description: |- + Добавляет копию версии в другой документ. Копирование BIM-версий этим способом не поддерживается. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата в том же запросе, если операция не успела завершиться за это время, то возвращает статус создания асинхронной операции, а не ее результат. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.ToDocumentRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Конфликт имён в назначении + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Скопировать версию в существующий документ + tags: + - copy + /app/v1/dashboards: + post: + consumes: + - application/json + parameters: + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.CreateDashboardRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.CreateDashboardResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Создать дашборд-документ + tags: + - documents + /app/v1/disks: + post: + consumes: + - application/json + description: 'Создаёт диск компании: имя и бакет выводятся из компании, создаётся + S3-бакет и корневой документ. Доступно только суперюзеру. Ответ упрощённый.' + parameters: + - description: Параметры диска + in: body + name: request + required: true + schema: + $ref: '#/definitions/disk.CreateRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/disk.CreateInternalResponse' + "400": + description: Компания/админы не найдены + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Требуются права суперюзера + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Бакет уже существует + schema: + $ref: '#/definitions/apperrors.APIError409' + "422": + description: Unprocessable Entity + schema: + $ref: '#/definitions/apperrors.APIError422' + "502": + description: Каталог пользователей недоступен + schema: + $ref: '#/definitions/apperrors.APIError502' + summary: Создать диск + tags: + - disks + /app/v1/disks/{disk_id}/documents/tree: + get: + description: 'Минимальная проекция дерева с видимостью запрашивающего. parent_id + — дети узла (по умолчанию корень диска); child_id — deep-link: цепочка от + корня до узла и дети каждого узла цепочки. Параметры взаимоисключающие.' + parameters: + - description: ID диска (UUID) + in: path + name: disk_id + required: true + type: string + - description: Узел, детей которого вернуть + in: query + name: parent_id + type: integer + - description: Deep-link до узла + in: query + name: child_id + type: integer + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.TreeOutput' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Дерево документации с минимальным набором данных + tags: + - documents + /app/v1/disks/{disk_id}/permission-matrix/grants: + post: + consumes: + - application/json + description: 'Прямые permission-строки запрошенных сервисных аккаунтов на запрошенных + документах. Доступ: администратор диска или права админа на корне диска. Удалённые, + неопубликованные и принадлежащие другому диску документы исключаются. Лимиты: + ≤100 SA, ≤1000 id, произведение ≤50000.' + parameters: + - description: ID диска (UUID) + in: path + name: disk_id + required: true + type: string + - description: Прямоугольник запроса + in: body + name: request + required: true + schema: + $ref: '#/definitions/permissionmatrix.GrantsQueryRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/permissionmatrix.GrantsQueryResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Гранты матрицы прав (прямоугольник ids × SA) + tags: + - permission-matrix + /app/v1/documents/: + delete: + description: ID через запятую в query; недоступные попадают в skipped_ids. + parameters: + - description: ID через запятую + in: query + name: document_ids + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.BulkDeleteResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + summary: Массовое удаление + tags: + - documents + post: + consumes: + - application/json + description: Для проекта требуется право администрирования родительской папки; + для папки — записи или администрирования; для документа — загрузки, записи + или администрирования. Также доступно администратору диска. Диск должен принадлежать + одной из компаний пользователя, указанных в токене. + parameters: + - description: Параметры документа + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.CreateRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.CreateResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Родитель не найден + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Имя занято + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Создать документ, папку или проект + tags: + - documents + /app/v1/documents/{document_id}: + delete: + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + produces: + - application/json + responses: + "204": + description: Удалён + "400": + description: Корень диска удалить нельзя + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Удалить документ + tags: + - documents + /app/v1/documents/{document_id}/add_bundle: + post: + consumes: + - application/json + description: Привязывает загруженную версию к документу. Требуется право загрузки, + записи или администрирования документа; также доступно администратору диска. + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + - description: Идентификатор версии документа + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.AddBundleRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.AddBundleResponse' + "400": + description: Версия уже привязана к документу или ещё не загружена + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Добавить версию в документ + tags: + - documents + /app/v1/documents/{document_id}/attributes/: + put: + consumes: + - application/json + description: 'Заменяет атрибуты документа полным набором из attributes. Новые + атрибуты добавляются, значения существующих обновляются, отсутствующие в запросе + атрибуты удаляются из активного набора. Атрибуты с пустым списком values также + удаляются из активного набора. Передавайте весь желаемый набор атрибутов, + а не только изменения. Пустой список attributes: [] очищает все атрибуты документа. + Требуется право редактирования или администрирования документа; также доступно + администратору соответствующего диска.' + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + - description: Полный желаемый набор атрибутов; пустой список очищает все атрибуты + документа + in: body + name: request + required: true + schema: + $ref: '#/definitions/attribute.ReplaceRequest' + produces: + - application/json + responses: + "204": + description: Набор атрибутов документа полностью заменён + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "422": + description: Unprocessable Entity + schema: + $ref: '#/definitions/apperrors.APIError422' + summary: Полностью заменить набор атрибутов документа + tags: + - attributes + /app/v1/documents/{document_id}/move_bundles: + patch: + consumes: + - application/json + description: |- + Переносит выбранные версии в целевой документ; исходные документы без версий удаляются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: ID целевого документа + in: path + name: document_id + required: true + type: integer + - description: Идентификаторы версий документа + in: body + name: request + required: true + schema: + $ref: '#/definitions/move.MoveBundlesRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/move.StartResponse' + "400": + description: Разные документы-источники / не загружен / гейт обработки + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Перенести версии в другой документ + tags: + - move + /app/v1/documents/{document_id}/permissions/: + post: + consumes: + - application/json + description: 'Заменяет права, назначенные непосредственно на документе указанному + в service_account получателю, полным набором из permissions. Новые права добавляются, + отсутствующие в переданном списке отзываются, совпадающие сохраняются. Передавайте + весь желаемый набор прав, а не только изменения. Пустой список permissions: + [] отзывает все прямые права этого получателя на документе. Права других получателей + и права, унаследованные от родительских папок, не изменяются; поэтому отзыв + прямых прав не обязательно лишает получателя доступа. Требуется право управления + доступом или администрирования документа; также доступно администратору диска. + При управлении доступом без прав администратора можно добавлять и отзывать + только те права, которыми обладает пользователь.' + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + - description: Получатель и полный желаемый набор прав; пустой список отзывает + все его прямые права на документе + in: body + name: request + required: true + schema: + $ref: '#/definitions/permission.SetRequest' + produces: + - application/json + responses: + "204": + description: Прямые права получателя заменены переданным набором + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Полностью заменить набор прав на документ для указанного получателя + tags: + - permissions + /app/v1/documents/{document_id}/properties: + get: + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.FolderPropertiesOutput' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Свойства документа + tags: + - documents + /app/v1/documents/{document_id}/rename: + patch: + consumes: + - application/json + description: Изменяет имя документа или папки. Требуется право редактирования + или администрирования документа; также доступно администратору диска. + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + - description: Новое имя + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.RenameRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.RenameResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Имя занято в папке + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Переименовать документ или папку + tags: + - documents + /app/v1/documents/{document_id}/update-path: + patch: + consumes: + - application/json + description: Изменяет родительскую папку. Требуется право записи или администрирования + исходного документа и право редактирования или администрирования папки назначения; + администратор соответствующего диска имеет доступ к объектам этого диска. + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + - description: Новый родитель + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.UpdatePathRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.UpdatePathResponse' + "400": + description: Между дисками/проектами / в своё поддерево + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Переместить документ или папку + tags: + - documents + /app/v1/documents/{document_id}/workspace: + post: + description: Создаёт workspace, если отсутствует связь рабочей области и документа + в СОД. Требует storage.edit или storage.admin на документе. + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.CreateDocumentWorkspaceResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + "502": + description: Bad Gateway + schema: + $ref: '#/definitions/apperrors.APIError502' + summary: Создать рабочую область документа + tags: + - documents + /app/v1/documents/{id}/copy: + post: + consumes: + - application/json + description: |- + Копирует документ либо папку с содержимым. exclude исключает выбранные ветки. options.conflict_policy определяет поведение при совпадении имени в папке назначения: skip (по умолчанию, в том числе при пустом значении) — пропустить документ или папку целиком со всем содержимым; as_copy — создать копию под первым свободным именем с суффиксом « copy», « copy 2», …, « copy 50». Например, при занятом имени «Проект» копия получит имя «Проект copy». Если все 50 вариантов заняты, элемент также пропускается. При отсутствии совпадения сохраняется исходное имя. Существующие документы и папки не перезаписываются и не объединяются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право администрирования исходных документов и право записи или администрирования в папке назначения; администратор соответствующего диска имеет доступ к объектам этого диска. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: ID корня + in: path + name: id + required: true + type: integer + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.SubtreeRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Конфликт имён в назначении + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Скопировать документ или дерево папок + tags: + - copy + /app/v1/documents/bin: + delete: + parameters: + - description: Корневая папка + in: query + name: parent_id + required: true + type: integer + produces: + - application/json + responses: + "204": + description: Очищено + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + summary: Очистить корзину + tags: + - documents + /app/v1/documents/bin/restore: + patch: + parameters: + - description: Корневая папка + in: query + name: parent_id + required: true + type: integer + produces: + - application/json + responses: + "204": + description: Восстановлено + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + summary: Восстановить из корзины + tags: + - documents + /app/v1/documents/check-conflicts: + post: + consumes: + - application/json + description: Проверяет наличие одноимённых документов в указанных папках. Требуется + авторизация; отдельная проверка прав на документы не выполняется. + parameters: + - description: Кандидаты + in: body + name: request + required: true + schema: + $ref: '#/definitions/s32d.CheckConflictsRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/s32d.CheckConflictsResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + summary: Проверить конфликты имён + tags: + - documents + /app/v1/documents/copy: + post: + consumes: + - application/json + description: |- + Копирует выбранные документы и папки с содержимым. Вложенные выбранные элементы копируются вместе с родительскими. options.conflict_policy определяет поведение при совпадении имени в папке назначения: skip (по умолчанию, в том числе при пустом значении) — пропустить документ или папку целиком со всем содержимым; as_copy — создать копию под первым свободным именем с суффиксом « copy», « copy 2», …, « copy 50». Например, при занятом имени «Проект» копия получит имя «Проект copy». Если все 50 вариантов заняты, элемент также пропускается. При отсутствии совпадения сохраняется исходное имя. Существующие документы и папки не перезаписываются и не объединяются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право администрирования исходных документов и право записи или администрирования в папке назначения; администратор соответствующего диска имеет доступ к объектам этого диска. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.SelectionRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Конфликт имён в назначении + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Скопировать выбранные документы и папки + tags: + - copy + /app/v1/documents/copy_structure: + post: + consumes: + - application/json + description: Создаёт копию исходной папки и её вложенных папок в месте назначения + без файлов. При copy_permissions=true также копирует действующие права доступа, + назначенные непосредственно каждой исходной папке. Унаследованные от родителей + источника права и права администраторов диска не копируются. По умолчанию + копирование прав выключено. Требуется право администрирования источника и + назначения; администратор соответствующего диска имеет доступ к объектам этого + диска. + parameters: + - description: Источник и цель + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.CopyStructureRequest' + produces: + - application/json + responses: + "200": + description: Скопировано + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + summary: Скопировать структуру папок + tags: + - documents + /app/v1/documents/move: + post: + consumes: + - application/json + description: |- + Перемещает выбранные элементы, переименовывает или объединяет одноимённые документы согласно запросу. При объединении версии переходят в целевой документ, а исходный документ удаляется. Перенос между дисками или проектами запрещён. Требуется право записи или администрирования источника; право записи, редактирования или администрирования назначения. Для объединения требуется право записи или администрирования целевого документа. Администратор соответствующего диска имеет доступ к объектам этого диска. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Манифест + in: body + name: request + required: true + schema: + $ref: '#/definitions/move.MoveRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/move.StartResponse' + "400": + description: Смешение файлов и папок / между дисками/проектами / невалидный + union + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Конфликты имён в назначении + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Переместить документы и папки + tags: + - move + /app/v1/documents/public_link/: + post: + consumes: + - application/json + description: Создаёт ссылку на последнюю, указанную или последнюю согласованную + версию документа. Можно задать срок действия. Требуется право создания публичных + ссылок или администрирования документа; также доступно администратору диска. + parameters: + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/publiclink.CreateRequest' + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/publiclink.CreateOutput' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Создать публичную ссылку + tags: + - public-links + /app/v1/documents/public_link/{id}: + delete: + parameters: + - description: ID ссылки + in: path + name: id + required: true + type: integer + produces: + - application/json + responses: + "204": + description: Удалена + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Удалить публичную ссылку + tags: + - public-links + patch: + consumes: + - application/json + description: Меняет параметры ссылки. Отсутствующие поля сохраняются; expires_at=null + отменяет ограничение срока действия. Требуется право создания публичных ссылок + или администрирования документа; также доступно администратору диска. + parameters: + - description: ID ссылки + in: path + name: id + required: true + type: string + - description: Изменения + in: body + name: request + required: true + schema: + $ref: '#/definitions/publiclink.UpdateRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/publiclink.UpdateOutput' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Изменить публичную ссылку + tags: + - public-links + /app/v1/documents/update-path: + patch: + consumes: + - application/json + description: Изменяет родительскую папку выбранных документов. Документы, для + которых недостаточно прав, пропускаются. Требуется право записи или администрирования + исходного документа и право редактирования или администрирования папки назначения; + администратор соответствующего диска имеет доступ к объектам этого диска. + parameters: + - description: Список документов и родитель + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.BulkUpdatePathRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.BulkUpdatePathResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Переместить несколько документов + tags: + - documents + /app/v1/links/: + post: + consumes: + - application/json + description: Создаёт ссылку на существующий документ в выбранной папке. Требуется + право записи или администрирования и на документ, и на папку назначения; администратор + соответствующего диска имеет доступ к объектам этого диска. + parameters: + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/link.CreateRequest' + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/link.CreateOutput' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Имя занято / линк уже есть + schema: + $ref: '#/definitions/apperrors.APIError409' + "422": + description: Цель — линк или папка + schema: + $ref: '#/definitions/apperrors.APIError422' + summary: Создать ссылку на документ в папке + tags: + - links + /app/v1/marks/: + get: + description: Возвращает последнюю статистику по занимаемому пространству компанией + если она есть + parameters: + - description: Идентификатор компании + in: query + name: company_id + required: true + type: integer + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/sizer.getLatestStatResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Последняя статистика компании по занимаемому пространству если она + есть + tags: + - sizer + /app/v1/marks/delete: + post: + consumes: + - application/json + description: Удаляет указанные маркировки если они принадлежат одной версии + документа + parameters: + - description: Параметры удаления + in: body + name: request + required: true + schema: + $ref: '#/definitions/mark.deleteMarksRequest' + responses: + "204": + description: No Content + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + summary: Удалить маркировки + tags: + - marks + /app/v1/s32d/sessions/: + get: + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/s32d.ListSessionsResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Список S32D-сессий + tags: + - s32d + post: + consumes: + - application/json + description: Создаёт сессию конвертации архива страниц в документы. + parameters: + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/s32d.CreateSessionRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/s32d.CreateSessionResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Создать S32D-сессию + tags: + - s32d + /app/v1/s32d/sessions/{session_id}: + delete: + parameters: + - description: UUID сессии + in: path + name: session_id + required: true + type: string + produces: + - application/json + responses: + "204": + description: Удалена + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Удалить S32D-сессию + tags: + - s32d + /app/v1/s32d/sessions/{session_id}/archive: + put: + consumes: + - application/octet-stream + description: Архив сырым телом (application/octet-stream). + parameters: + - description: UUID сессии + in: path + name: session_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/s32d.UploadArchiveResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Загрузить архив сессии + tags: + - s32d + /app/v1/s32d/sessions/{session_id}/archive/multipart: + post: + parameters: + - description: UUID сессии + in: path + name: session_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/s32d.InitMultipartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Начать multipart-загрузку архива + tags: + - s32d + /app/v1/s32d/sessions/{session_id}/archive/multipart/{upload_id}/complete: + post: + parameters: + - description: UUID сессии + in: path + name: session_id + required: true + type: string + - description: UUID загрузки + in: path + name: upload_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: Завершена + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Завершить multipart-загрузку архива + tags: + - s32d + /app/v1/s32d/sessions/{session_id}/archive/multipart/{upload_id}/parts/{part_number}: + put: + consumes: + - application/octet-stream + description: Часть сырым телом. + parameters: + - description: UUID сессии + in: path + name: session_id + required: true + type: string + - description: UUID загрузки + in: path + name: upload_id + required: true + type: string + - description: Номер части + in: path + name: part_number + required: true + type: integer + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/s32d.UploadPartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Загрузить часть архива + tags: + - s32d + /app/v1/s32d/sessions/{session_id}/cancel: + post: + parameters: + - description: UUID сессии + in: path + name: session_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: Отменена + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Отменить S32D-сессию + tags: + - s32d + /app/v1/s32d/sessions/{session_id}/process: + post: + description: Стартует BPMN-процесс разбора загруженного архива. + parameters: + - description: UUID сессии + in: path + name: session_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/s32d.ProcessSessionResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Запустить обработку сессии + tags: + - s32d + /app/v1/s32d/sessions/{session_id}/retry: + post: + parameters: + - description: UUID сессии + in: path + name: session_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: Перезапущена + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Повторить упавшую сессию + tags: + - s32d + /app/v1/s32d/sessions/{session_id}/status: + get: + parameters: + - description: UUID сессии + in: path + name: session_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/s32d.SessionStatusResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Статус S32D-сессии + tags: + - s32d + /app/v1/uploads/multipart/{upload_id}/{part_number}: + post: + consumes: + - application/octet-stream + description: 'Часть файла передаётся в теле запроса с Content-Type: application/octet-stream + и Content-Length. Размер каждой части, кроме последней, должен быть не менее + 5 МиБ. Диск должен принадлежать одной из компаний пользователя, указанных + в токене.' + parameters: + - description: UUID загрузки + in: path + name: upload_id + required: true + type: string + - description: Номер части (с 1) + in: path + name: part_number + required: true + type: integer + - description: Байты файла в теле запроса, без JSON-обёртки и кодирования Base64 + in: body + name: content + required: true + schema: + type: string + - description: Размер тела запроса в байтах + format: int64 + in: header + minimum: 1 + name: Content-Length + required: true + type: integer + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.UploadPartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Загрузить часть файла + tags: + - uploads + /app/v1/uploads/multipart/{upload_id}/abort: + post: + description: Отменяет незавершённую загрузку и удаляет её части. Диск должен + принадлежать одной из компаний пользователя, указанных в токене. + parameters: + - description: UUID загрузки + in: path + name: upload_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.MultipartFinishedResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Отменить загрузку файла по частям + tags: + - uploads + /app/v1/uploads/multipart/{upload_id}/complete: + post: + description: Собирает загруженные части в файл версии документа. Диск должен + принадлежать одной из компаний пользователя, указанных в токене. + parameters: + - description: UUID загрузки + in: path + name: upload_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.MultipartFinishedResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Завершить загрузку файла по частям + tags: + - uploads + /app/v1/workspaces: + post: + consumes: + - application/json + description: Создаёт документ типа workspace и воркспейс во внешнем сервисе + для набора документов. + parameters: + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.CreateWorkspaceNodeRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.CreateWorkspaceNodeResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Создать workspace-документ + tags: + - documents + /external/v1/async-operations: + get: + description: Возвращает активные и недавно завершённые операции копирования + и переноса. Доступны только собственные операции пользователя. + parameters: + - description: 'Фильтр по типу: copy|move|move_bundles' + in: query + name: type + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/move.OperationListResponse' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + summary: Получить список операций + tags: + - async-operations + /external/v1/async-operations/{id}: + get: + description: Возвращает состояние, прогресс и результаты копирования или переноса. + Доступно только создателю операции. + parameters: + - description: UUID операции + in: path + name: id + required: true + type: string + - description: 'copy: размер страницы items (default 1000)' + in: query + name: items_limit + type: integer + - description: 'copy: смещение' + in: query + name: items_offset + type: integer + - description: 'copy: фильтр pending|running|done|skipped|failed' + in: query + name: items_status + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/move.StatusResponse' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Получить состояние операции + tags: + - async-operations + /external/v1/async-operations/{id}/cancel: + post: + description: Запрашивает отмену копирования или переноса. Уже выполненные изменения + не откатываются. Если копирование достигло этапа публикации результата, возвращается + 409. Доступно только создателю операции. + parameters: + - description: UUID операции + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "202": + description: Отмена запрошена + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Отменить операцию + tags: + - async-operations + /external/v1/bundles/: + post: + consumes: + - application/json + description: Создаёт версию и возвращает параметры для загрузки её файлов. Диск + должен принадлежать одной из компаний пользователя, указанных в токене. + parameters: + - description: Параметры версии документа + in: body + name: request + required: true + schema: + $ref: '#/definitions/bundle.CreateRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.CreateResponse' + "400": + description: Некорректное тело / диск не найден + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "422": + description: Ключи не подходят типу версии / расширение имени + schema: + $ref: '#/definitions/apperrors.APIError422' + summary: Создать версию документа + tags: + - bundles + /external/v1/bundles/{bundle_id}/{key}/upload_multipart: + post: + description: Возвращает идентификатор загрузки и адрес для отправки частей в + той же версии API. Диск должен принадлежать одной из компаний пользователя, + указанных в токене. + parameters: + - description: Идентификатор версии документа + in: path + name: bundle_id + required: true + type: string + - description: Ключ файла версии + in: path + name: key + required: true + type: string + - description: Относительный путь файла в наборе файлов версии; только для типа + folder + in: query + name: path + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.StartMultipartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Начать загрузку файла по частям + tags: + - uploads + /external/v1/bundles/{bundle_id}/{key}/upload_single: + post: + consumes: + - application/octet-stream + description: 'Файл передаётся в теле запроса с Content-Type: application/octet-stream + и Content-Length. Формат multipart/form-data не поддерживается. Диск должен + принадлежать одной из компаний пользователя, указанных в токене.' + parameters: + - description: Идентификатор версии документа + in: path + name: bundle_id + required: true + type: string + - description: Ключ файла версии + in: path + name: key + required: true + type: string + - description: Относительный путь файла в наборе файлов версии; только для типа + folder + in: query + name: path + type: string + - description: Имя файла + in: query + name: filename + type: string + - description: Байты файла в теле запроса, без JSON-обёртки и кодирования Base64 + in: body + name: content + required: true + schema: + type: string + - description: Размер тела запроса в байтах + format: int64 + in: header + minimum: 1 + name: Content-Length + required: true + type: integer + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.UploadSingleResponse' + "400": + description: Форма вместо raw / нет Content-Length + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Загрузить файл версии одним запросом + tags: + - uploads + /external/v1/bundles/{bundle_id}/author: + patch: + consumes: + - application/json + description: Назначает нового автора указанной версии документа. Требуется право + редактирования или администрирования документа; также доступно администратору + диска. + parameters: + - description: Идентификатор UUID формата версии документа + in: path + name: bundle_id + required: true + type: string + - description: Новый автор + in: body + name: request + required: true + schema: + $ref: '#/definitions/bundle.ChangeAuthorRequest' + produces: + - application/json + responses: + "204": + description: No Content + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Сменить автора версии документа + tags: + - bundles + /external/v1/bundles/{bundle_id}/mark: + post: + consumes: + - application/json + description: Наносит маркировку на существующую или новую версию документа. + Достаточно права на один из запрошенных видов маркировки либо права администрирования + документа; также доступно администратору диска. + parameters: + - description: Идентификатор формата UUID версии документа + in: path + name: bundle_id + required: true + type: string + - description: Определения марок + in: body + name: request + required: true + schema: + $ref: '#/definitions/bundle.markExternalBundleRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.markBundleResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Нанести QR-код, штамп или электронную подпись + tags: + - bundles + /external/v1/bundles/{bundle_id}/presign: + get: + description: Возвращает хеш файла версии для формирования электронной подписи. + Требуется право электронной подписи или администрирования документа; также + доступно администратору диска. + parameters: + - description: Идентификатор формата UUID версии документа + in: path + name: bundle_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.PresignResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Подготовить версию к электронной подписи + tags: + - bundles + /external/v1/bundles/{bundle_id}/upload_finish: + post: + description: Подтверждает завершение загрузки всех файлов версии. Диск должен + принадлежать одной из компаний пользователя, указанных в токене. + parameters: + - description: Идентификатор версии документа + in: path + name: bundle_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.CompleteUploadResponse' + "400": + description: Некорректный bundle_id / контент не залит + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Версия не найдена + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Завершить загрузку версии документа + tags: + - bundles + /external/v1/bundles/copy: + post: + consumes: + - application/json + description: |- + Создаёт новый документ на основе выбранной версии. Возвращает идентификатор операции; Prefer: wait заголовок позволяет дождаться результата в течение выбранного количества секунд в том же запросе, вместо того, чтобы отслеживать статус через API асинхронных операций. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.NewDocumentRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Конфликт имён в назначении + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Скопировать версию в новый документ + tags: + - copy + /external/v1/bundles/copy-to-document: + post: + consumes: + - application/json + description: |- + Добавляет копию версии в другой документ. Копирование BIM-версий этим способом не поддерживается. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата в том же запросе, если операция не успела завершиться за это время, то возвращает статус создания асинхронной операции, а не ее результат. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.ToDocumentRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Конфликт имён в назначении + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Скопировать версию в существующий документ + tags: + - copy + /external/v1/documents/: + post: + consumes: + - application/json + description: Для проекта требуется право администрирования родительской папки; + для папки — записи или администрирования; для документа — загрузки, записи + или администрирования. Также доступно администратору диска. Диск должен принадлежать + одной из компаний пользователя, указанных в токене. + parameters: + - description: Параметры документа + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.CreateRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.CreateResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Родитель не найден + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Имя занято + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Создать документ, папку или проект + tags: + - documents + /external/v1/documents/{document_id}/add_bundle: + post: + consumes: + - application/json + description: Привязывает загруженную версию к документу. Требуется право загрузки, + записи или администрирования документа; также доступно администратору диска. + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + - description: Идентификатор версии документа + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.AddBundleRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.AddBundleResponse' + "400": + description: Версия уже привязана к документу или ещё не загружена + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Добавить версию в документ + tags: + - documents + /external/v1/documents/{document_id}/author: + patch: + consumes: + - application/json + description: Назначает нового автора документа; при include_bundles=true также + меняет автора всех его версий. Требуется право редактирования или администрирования + документа; также доступно администратору диска. + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + - description: Новый автор; include_bundles=true также меняет автора всех версий + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.ChangeAuthorRequest' + produces: + - application/json + responses: + "204": + description: No Content + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Сменить автора документа + tags: + - documents + /external/v1/documents/{document_id}/move_bundles: + patch: + consumes: + - application/json + description: |- + Переносит выбранные версии в целевой документ; исходные документы без версий удаляются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: ID целевого документа + in: path + name: document_id + required: true + type: integer + - description: Идентификаторы версий документа + in: body + name: request + required: true + schema: + $ref: '#/definitions/move.MoveBundlesRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/move.StartResponse' + "400": + description: Разные документы-источники / не загружен / гейт обработки + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Перенести версии в другой документ + tags: + - move + /external/v1/documents/{document_id}/permissions/: + post: + consumes: + - application/json + description: 'Заменяет права, назначенные непосредственно на документе указанному + в service_account получателю, полным набором из permissions. Новые права добавляются, + отсутствующие в переданном списке отзываются, совпадающие сохраняются. Передавайте + весь желаемый набор прав, а не только изменения. Пустой список permissions: + [] отзывает все прямые права этого получателя на документе. Права других получателей + и права, унаследованные от родительских папок, не изменяются; поэтому отзыв + прямых прав не обязательно лишает получателя доступа. Требуется право управления + доступом или администрирования документа; также доступно администратору диска. + При управлении доступом без прав администратора можно добавлять и отзывать + только те права, которыми обладает пользователь.' + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + - description: Получатель и полный желаемый набор прав; пустой список отзывает + все его прямые права на документе + in: body + name: request + required: true + schema: + $ref: '#/definitions/permission.SetRequest' + produces: + - application/json + responses: + "204": + description: Прямые права получателя заменены переданным набором + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Полностью заменить набор прав на документ для указанного получателя + tags: + - permissions + /external/v1/documents/{id}/copy: + post: + consumes: + - application/json + description: |- + Копирует документ либо папку с содержимым. exclude исключает выбранные ветки. options.conflict_policy определяет поведение при совпадении имени в папке назначения: skip (по умолчанию, в том числе при пустом значении) — пропустить документ или папку целиком со всем содержимым; as_copy — создать копию под первым свободным именем с суффиксом « copy», « copy 2», …, « copy 50». Например, при занятом имени «Проект» копия получит имя «Проект copy». Если все 50 вариантов заняты, элемент также пропускается. При отсутствии совпадения сохраняется исходное имя. Существующие документы и папки не перезаписываются и не объединяются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право администрирования исходных документов и право записи или администрирования в папке назначения; администратор соответствующего диска имеет доступ к объектам этого диска. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: ID корня + in: path + name: id + required: true + type: integer + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.SubtreeRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Конфликт имён в назначении + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Скопировать документ или дерево папок + tags: + - copy + /external/v1/documents/check-conflicts: + post: + consumes: + - application/json + description: Проверяет наличие одноимённых документов в указанных папках. Требуется + авторизация; отдельная проверка прав на документы не выполняется. + parameters: + - description: Кандидаты + in: body + name: request + required: true + schema: + $ref: '#/definitions/s32d.CheckConflictsRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/s32d.CheckConflictsResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + summary: Проверить конфликты имён + tags: + - documents + /external/v1/documents/copy: + post: + consumes: + - application/json + description: |- + Копирует выбранные документы и папки с содержимым. Вложенные выбранные элементы копируются вместе с родительскими. options.conflict_policy определяет поведение при совпадении имени в папке назначения: skip (по умолчанию, в том числе при пустом значении) — пропустить документ или папку целиком со всем содержимым; as_copy — создать копию под первым свободным именем с суффиксом « copy», « copy 2», …, « copy 50». Например, при занятом имени «Проект» копия получит имя «Проект copy». Если все 50 вариантов заняты, элемент также пропускается. При отсутствии совпадения сохраняется исходное имя. Существующие документы и папки не перезаписываются и не объединяются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право администрирования исходных документов и право записи или администрирования в папке назначения; администратор соответствующего диска имеет доступ к объектам этого диска. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.SelectionRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Конфликт имён в назначении + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Скопировать выбранные документы и папки + tags: + - copy + /external/v1/documents/move: + post: + consumes: + - application/json + description: |- + Перемещает выбранные элементы, переименовывает или объединяет одноимённые документы согласно запросу. При объединении версии переходят в целевой документ, а исходный документ удаляется. Перенос между дисками или проектами запрещён. Требуется право записи или администрирования источника; право записи, редактирования или администрирования назначения. Для объединения требуется право записи или администрирования целевого документа. Администратор соответствующего диска имеет доступ к объектам этого диска. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Манифест + in: body + name: request + required: true + schema: + $ref: '#/definitions/move.MoveRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/move.StartResponse' + "400": + description: Смешение файлов и папок / между дисками/проектами / невалидный + union + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Конфликты имён в назначении + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Переместить документы и папки + tags: + - move + /external/v1/uploads/multipart/{upload_id}/{part_number}: + post: + consumes: + - application/octet-stream + description: 'Часть файла передаётся в теле запроса с Content-Type: application/octet-stream + и Content-Length. Размер каждой части, кроме последней, должен быть не менее + 5 МиБ. Диск должен принадлежать одной из компаний пользователя, указанных + в токене.' + parameters: + - description: UUID загрузки + in: path + name: upload_id + required: true + type: string + - description: Номер части (с 1) + in: path + name: part_number + required: true + type: integer + - description: Байты файла в теле запроса, без JSON-обёртки и кодирования Base64 + in: body + name: content + required: true + schema: + type: string + - description: Размер тела запроса в байтах + format: int64 + in: header + minimum: 1 + name: Content-Length + required: true + type: integer + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.UploadPartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Загрузить часть файла + tags: + - uploads + /external/v1/uploads/multipart/{upload_id}/abort: + post: + description: Отменяет незавершённую загрузку и удаляет её части. Диск должен + принадлежать одной из компаний пользователя, указанных в токене. + parameters: + - description: UUID загрузки + in: path + name: upload_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.MultipartFinishedResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Отменить загрузку файла по частям + tags: + - uploads + /external/v1/uploads/multipart/{upload_id}/complete: + post: + description: Собирает загруженные части в файл версии документа. Диск должен + принадлежать одной из компаний пользователя, указанных в токене. + parameters: + - description: UUID загрузки + in: path + name: upload_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.MultipartFinishedResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Завершить загрузку файла по частям + tags: + - uploads + /external/v2/async-operations: + get: + description: Возвращает активные и недавно завершённые операции копирования + и переноса. Доступны только собственные операции пользователя. + parameters: + - description: 'Фильтр по типу: copy|move|move_bundles' + in: query + name: type + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/move.OperationListResponse' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + summary: Получить список операций + tags: + - async-operations + /external/v2/async-operations/{id}: + get: + description: Возвращает состояние, прогресс и результаты копирования или переноса. + Доступно только создателю операции. + parameters: + - description: UUID операции + in: path + name: id + required: true + type: string + - description: 'copy: размер страницы items (default 1000)' + in: query + name: items_limit + type: integer + - description: 'copy: смещение' + in: query + name: items_offset + type: integer + - description: 'copy: фильтр pending|running|done|skipped|failed' + in: query + name: items_status + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/move.StatusResponse' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Получить состояние операции + tags: + - async-operations + /external/v2/async-operations/{id}/cancel: + post: + description: Запрашивает отмену копирования или переноса. Уже выполненные изменения + не откатываются. Если копирование достигло этапа публикации результата, возвращается + 409. Доступно только создателю операции. + parameters: + - description: UUID операции + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "202": + description: Отмена запрошена + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Отменить операцию + tags: + - async-operations + /external/v2/bundles: + post: + consumes: + - application/json + description: Создаёт версию и возвращает параметры для загрузки её файлов. Диск + должен принадлежать одной из компаний пользователя, указанных в токене. + parameters: + - description: Параметры версии документа + in: body + name: request + required: true + schema: + $ref: '#/definitions/bundle.CreateRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.CreateResponse' + "400": + description: Некорректное тело / диск не найден + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "422": + description: Ключи не подходят типу версии / расширение имени + schema: + $ref: '#/definitions/apperrors.APIError422' + summary: Создать версию документа + tags: + - bundles + /external/v2/bundles/{bundle_id}/{key}/upload_multipart: + post: + description: Возвращает идентификатор загрузки и адрес для отправки частей в + той же версии API. Диск должен принадлежать одной из компаний пользователя, + указанных в токене. + parameters: + - description: Идентификатор версии документа + in: path + name: bundle_id + required: true + type: string + - description: Ключ файла версии + in: path + name: key + required: true + type: string + - description: Относительный путь файла в наборе файлов версии; только для типа + folder + in: query + name: path + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.StartMultipartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Начать загрузку файла по частям + tags: + - uploads + /external/v2/bundles/{bundle_id}/{key}/upload_single: + post: + consumes: + - application/octet-stream + description: 'Файл передаётся в теле запроса с Content-Type: application/octet-stream + и Content-Length. Формат multipart/form-data не поддерживается. Диск должен + принадлежать одной из компаний пользователя, указанных в токене.' + parameters: + - description: Идентификатор версии документа + in: path + name: bundle_id + required: true + type: string + - description: Ключ файла версии + in: path + name: key + required: true + type: string + - description: Относительный путь файла в наборе файлов версии; только для типа + folder + in: query + name: path + type: string + - description: Имя файла + in: query + name: filename + type: string + - description: Байты файла в теле запроса, без JSON-обёртки и кодирования Base64 + in: body + name: content + required: true + schema: + type: string + - description: Размер тела запроса в байтах + format: int64 + in: header + minimum: 1 + name: Content-Length + required: true + type: integer + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.UploadSingleResponse' + "400": + description: Форма вместо raw / нет Content-Length + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Загрузить файл версии одним запросом + tags: + - uploads + /external/v2/bundles/{bundle_id}/author: + patch: + consumes: + - application/json + description: Назначает нового автора указанной версии документа. Требуется право + редактирования или администрирования документа; также доступно администратору + диска. + parameters: + - description: Идентификатор UUID формата версии документа + in: path + name: bundle_id + required: true + type: string + - description: Новый автор + in: body + name: request + required: true + schema: + $ref: '#/definitions/bundle.ChangeAuthorRequest' + produces: + - application/json + responses: + "204": + description: No Content + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Сменить автора версии документа + tags: + - bundles + /external/v2/bundles/{bundle_id}/cancel_qr: + post: + description: Аннулирует QR-код указанной версии. Требуется право нанесения QR-кода + или администрирования документа; также доступно администратору диска. + parameters: + - description: Идентификатор версии документа + in: path + name: bundle_id + required: true + type: string + produces: + - application/json + responses: + "204": + description: Аннулирован + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Аннулировать QR-код версии документа + tags: + - bundles + /external/v2/bundles/{bundle_id}/changelog: + patch: + consumes: + - application/json + description: Обновляет номер и описание изменений. Отсутствующее description + сохраняется, null очищает его. Требуется право редактирования или администрирования + документа; также доступно администратору диска. + parameters: + - description: Идентификатор версии документа + in: path + name: bundle_id + required: true + type: string + - description: Изменения + in: body + name: request + required: true + schema: + $ref: '#/definitions/changelog.UpdateRequest' + produces: + - application/json + responses: + "200": + description: Обновлённое описание изменений + schema: + $ref: '#/definitions/changelog.UpdateResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "422": + description: Unprocessable Entity + schema: + $ref: '#/definitions/apperrors.APIError422' + summary: Изменить описание изменений версии + tags: + - changelogs + post: + consumes: + - application/json + description: Сохраняет номер и описание изменений версии. Повторное создание + возвращает 409. Требуется право редактирования или администрирования документа; + также доступно администратору диска. + parameters: + - description: Идентификатор версии документа + in: path + name: bundle_id + required: true + type: string + - description: Номер и описание + in: body + name: request + required: true + schema: + $ref: '#/definitions/changelog.CreateRequest' + produces: + - application/json + responses: + "201": + description: Описание изменений версии + schema: + $ref: '#/definitions/changelog.Response' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + "422": + description: Unprocessable Entity + schema: + $ref: '#/definitions/apperrors.APIError422' + summary: Добавить описание изменений версии + tags: + - changelogs + /external/v2/bundles/{bundle_id}/mark: + post: + consumes: + - application/json + description: Наносит маркировку на существующую или новую версию документа. + Достаточно права на один из запрошенных видов маркировки либо права администрирования + документа; также доступно администратору диска. + parameters: + - description: Идентификатор формата UUID версии документа + in: path + name: bundle_id + required: true + type: string + - description: Определения марок + in: body + name: request + required: true + schema: + $ref: '#/definitions/bundle.markExternalBundleRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.markBundleResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Нанести QR-код, штамп или электронную подпись + tags: + - bundles + /external/v2/bundles/{bundle_id}/presign: + get: + description: Возвращает хеш файла версии для формирования электронной подписи. + Требуется право электронной подписи или администрирования документа; также + доступно администратору диска. + parameters: + - description: Идентификатор формата UUID версии документа + in: path + name: bundle_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.PresignResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Подготовить версию к электронной подписи + tags: + - bundles + /external/v2/bundles/{bundle_id}/upload_finish: + post: + description: Подтверждает завершение загрузки всех файлов версии. Диск должен + принадлежать одной из компаний пользователя, указанных в токене. + parameters: + - description: Идентификатор версии документа + in: path + name: bundle_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.CompleteUploadResponse' + "400": + description: Некорректный bundle_id / контент не залит + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Версия не найдена + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Завершить загрузку версии документа + tags: + - bundles + /external/v2/bundles/copy: + post: + consumes: + - application/json + description: |- + Создаёт новый документ на основе выбранной версии. Возвращает идентификатор операции; Prefer: wait заголовок позволяет дождаться результата в течение выбранного количества секунд в том же запросе, вместо того, чтобы отслеживать статус через API асинхронных операций. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.NewDocumentRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Конфликт имён в назначении + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Скопировать версию в новый документ + tags: + - copy + /external/v2/bundles/copy-to-document: + post: + consumes: + - application/json + description: |- + Добавляет копию версии в другой документ. Копирование BIM-версий этим способом не поддерживается. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата в том же запросе, если операция не успела завершиться за это время, то возвращает статус создания асинхронной операции, а не ее результат. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.ToDocumentRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Конфликт имён в назначении + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Скопировать версию в существующий документ + tags: + - copy + /external/v2/documents: + post: + consumes: + - application/json + description: Для проекта требуется право администрирования родительской папки; + для папки — записи или администрирования; для документа — загрузки, записи + или администрирования. Также доступно администратору диска. Диск должен принадлежать + одной из компаний пользователя, указанных в токене. + parameters: + - description: Параметры документа + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.CreateRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.CreateResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Родитель не найден + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Имя занято + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Создать документ, папку или проект + tags: + - documents + /external/v2/documents/{document_id}/add_bundle: + post: + consumes: + - application/json + description: Привязывает загруженную версию к документу. Требуется право загрузки, + записи или администрирования документа; также доступно администратору диска. + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + - description: Идентификатор версии документа + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.AddBundleRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.AddBundleResponse' + "400": + description: Версия уже привязана к документу или ещё не загружена + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Добавить версию в документ + tags: + - documents + /external/v2/documents/{document_id}/attributes: + put: + consumes: + - application/json + description: 'Заменяет атрибуты документа полным набором из attributes. Новые + атрибуты добавляются, значения существующих обновляются, отсутствующие в запросе + атрибуты удаляются из активного набора. Атрибуты с пустым списком values также + удаляются из активного набора. Передавайте весь желаемый набор атрибутов, + а не только изменения. Пустой список attributes: [] очищает все атрибуты документа. + Требуется право редактирования или администрирования документа; также доступно + администратору соответствующего диска.' + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + - description: Полный желаемый набор атрибутов; пустой список очищает все атрибуты + документа + in: body + name: request + required: true + schema: + $ref: '#/definitions/attribute.ReplaceRequest' + produces: + - application/json + responses: + "204": + description: Набор атрибутов документа полностью заменён + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "422": + description: Unprocessable Entity + schema: + $ref: '#/definitions/apperrors.APIError422' + summary: Полностью заменить набор атрибутов документа + tags: + - attributes + /external/v2/documents/{document_id}/author: + patch: + consumes: + - application/json + description: Назначает нового автора документа; при include_bundles=true также + меняет автора всех его версий. Требуется право редактирования или администрирования + документа; также доступно администратору диска. + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + - description: Новый автор; include_bundles=true также меняет автора всех версий + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.ChangeAuthorRequest' + produces: + - application/json + responses: + "204": + description: No Content + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Сменить автора документа + tags: + - documents + /external/v2/documents/{document_id}/move_bundles: + patch: + consumes: + - application/json + description: |- + Переносит выбранные версии в целевой документ; исходные документы без версий удаляются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: ID целевого документа + in: path + name: document_id + required: true + type: integer + - description: Идентификаторы версий документа + in: body + name: request + required: true + schema: + $ref: '#/definitions/move.MoveBundlesRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/move.StartResponse' + "400": + description: Разные документы-источники / не загружен / гейт обработки + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Перенести версии в другой документ + tags: + - move + /external/v2/documents/{document_id}/permissions: + post: + consumes: + - application/json + description: 'Заменяет права, назначенные непосредственно на документе указанному + в service_account получателю, полным набором из permissions. Новые права добавляются, + отсутствующие в переданном списке отзываются, совпадающие сохраняются. Передавайте + весь желаемый набор прав, а не только изменения. Пустой список permissions: + [] отзывает все прямые права этого получателя на документе. Права других получателей + и права, унаследованные от родительских папок, не изменяются; поэтому отзыв + прямых прав не обязательно лишает получателя доступа. Требуется право управления + доступом или администрирования документа; также доступно администратору диска. + При управлении доступом без прав администратора можно добавлять и отзывать + только те права, которыми обладает пользователь.' + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + - description: Получатель и полный желаемый набор прав; пустой список отзывает + все его прямые права на документе + in: body + name: request + required: true + schema: + $ref: '#/definitions/permission.SetRequest' + produces: + - application/json + responses: + "204": + description: Прямые права получателя заменены переданным набором + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Полностью заменить набор прав на документ для указанного получателя + tags: + - permissions + /external/v2/documents/{document_id}/rename: + patch: + consumes: + - application/json + description: Изменяет имя документа или папки. Требуется право редактирования + или администрирования документа; также доступно администратору диска. + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + - description: Новое имя + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.RenameRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.RenameResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Имя занято в папке + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Переименовать документ или папку + tags: + - documents + /external/v2/documents/{document_id}/update-path: + patch: + consumes: + - application/json + description: Изменяет родительскую папку. Требуется право записи или администрирования + исходного документа и право редактирования или администрирования папки назначения; + администратор соответствующего диска имеет доступ к объектам этого диска. + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + - description: Новый родитель + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.UpdatePathRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.UpdatePathResponse' + "400": + description: Между дисками/проектами / в своё поддерево + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Переместить документ или папку + tags: + - documents + /external/v2/documents/{id}/copy: + post: + consumes: + - application/json + description: |- + Копирует документ либо папку с содержимым. exclude исключает выбранные ветки. options.conflict_policy определяет поведение при совпадении имени в папке назначения: skip (по умолчанию, в том числе при пустом значении) — пропустить документ или папку целиком со всем содержимым; as_copy — создать копию под первым свободным именем с суффиксом « copy», « copy 2», …, « copy 50». Например, при занятом имени «Проект» копия получит имя «Проект copy». Если все 50 вариантов заняты, элемент также пропускается. При отсутствии совпадения сохраняется исходное имя. Существующие документы и папки не перезаписываются и не объединяются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право администрирования исходных документов и право записи или администрирования в папке назначения; администратор соответствующего диска имеет доступ к объектам этого диска. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: ID корня + in: path + name: id + required: true + type: integer + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.SubtreeRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Конфликт имён в назначении + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Скопировать документ или дерево папок + tags: + - copy + /external/v2/documents/check-conflicts: + post: + consumes: + - application/json + description: Проверяет наличие одноимённых документов в указанных папках. Требуется + авторизация; отдельная проверка прав на документы не выполняется. + parameters: + - description: Кандидаты + in: body + name: request + required: true + schema: + $ref: '#/definitions/s32d.CheckConflictsRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/s32d.CheckConflictsResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + summary: Проверить конфликты имён + tags: + - documents + /external/v2/documents/copy: + post: + consumes: + - application/json + description: |- + Копирует выбранные документы и папки с содержимым. Вложенные выбранные элементы копируются вместе с родительскими. options.conflict_policy определяет поведение при совпадении имени в папке назначения: skip (по умолчанию, в том числе при пустом значении) — пропустить документ или папку целиком со всем содержимым; as_copy — создать копию под первым свободным именем с суффиксом « copy», « copy 2», …, « copy 50». Например, при занятом имени «Проект» копия получит имя «Проект copy». Если все 50 вариантов заняты, элемент также пропускается. При отсутствии совпадения сохраняется исходное имя. Существующие документы и папки не перезаписываются и не объединяются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право администрирования исходных документов и право записи или администрирования в папке назначения; администратор соответствующего диска имеет доступ к объектам этого диска. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.SelectionRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Конфликт имён в назначении + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Скопировать выбранные документы и папки + tags: + - copy + /external/v2/documents/copy_structure: + post: + consumes: + - application/json + description: Создаёт копию исходной папки и её вложенных папок в месте назначения + без файлов. При copy_permissions=true также копирует действующие права доступа, + назначенные непосредственно каждой исходной папке. Унаследованные от родителей + источника права и права администраторов диска не копируются. По умолчанию + копирование прав выключено. Требуется право администрирования источника и + назначения; администратор соответствующего диска имеет доступ к объектам этого + диска. + parameters: + - description: Источник и цель + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.CopyStructureRequest' + produces: + - application/json + responses: + "200": + description: Скопировано + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + summary: Скопировать структуру папок + tags: + - documents + /external/v2/documents/move: + post: + consumes: + - application/json + description: |- + Перемещает выбранные элементы, переименовывает или объединяет одноимённые документы согласно запросу. При объединении версии переходят в целевой документ, а исходный документ удаляется. Перенос между дисками или проектами запрещён. Требуется право записи или администрирования источника; право записи, редактирования или администрирования назначения. Для объединения требуется право записи или администрирования целевого документа. Администратор соответствующего диска имеет доступ к объектам этого диска. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. + Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Манифест + in: body + name: request + required: true + schema: + $ref: '#/definitions/move.MoveRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/move.StartResponse' + "400": + description: Смешение файлов и папок / между дисками/проектами / невалидный + union + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Конфликты имён в назначении + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Переместить документы и папки + tags: + - move + /external/v2/documents/public_link: + post: + consumes: + - application/json + description: Создаёт ссылку на последнюю, указанную или последнюю согласованную + версию документа. Можно задать срок действия. Требуется право создания публичных + ссылок или администрирования документа; также доступно администратору диска. + parameters: + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/publiclink.CreateRequest' + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/publiclink.CreateOutput' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Создать публичную ссылку + tags: + - public-links + /external/v2/documents/public_link/{id}: + patch: + consumes: + - application/json + description: Меняет параметры ссылки. Отсутствующие поля сохраняются; expires_at=null + отменяет ограничение срока действия. Требуется право создания публичных ссылок + или администрирования документа; также доступно администратору диска. + parameters: + - description: ID ссылки + in: path + name: id + required: true + type: string + - description: Изменения + in: body + name: request + required: true + schema: + $ref: '#/definitions/publiclink.UpdateRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/publiclink.UpdateOutput' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Изменить публичную ссылку + tags: + - public-links + /external/v2/documents/update-path: + patch: + consumes: + - application/json + description: Изменяет родительскую папку выбранных документов. Документы, для + которых недостаточно прав, пропускаются. Требуется право записи или администрирования + исходного документа и право редактирования или администрирования папки назначения; + администратор соответствующего диска имеет доступ к объектам этого диска. + parameters: + - description: Список документов и родитель + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.BulkUpdatePathRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.BulkUpdatePathResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Переместить несколько документов + tags: + - documents + /external/v2/links: + post: + consumes: + - application/json + description: Создаёт ссылку на существующий документ в выбранной папке. Требуется + право записи или администрирования и на документ, и на папку назначения; администратор + соответствующего диска имеет доступ к объектам этого диска. + parameters: + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/link.CreateRequest' + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/link.CreateOutput' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "409": + description: Имя занято / линк уже есть + schema: + $ref: '#/definitions/apperrors.APIError409' + "422": + description: Цель — линк или папка + schema: + $ref: '#/definitions/apperrors.APIError422' + summary: Создать ссылку на документ в папке + tags: + - links + /external/v2/uploads/multipart/{upload_id}/{part_number}: + post: + consumes: + - application/octet-stream + description: 'Часть файла передаётся в теле запроса с Content-Type: application/octet-stream + и Content-Length. Размер каждой части, кроме последней, должен быть не менее + 5 МиБ. Диск должен принадлежать одной из компаний пользователя, указанных + в токене.' + parameters: + - description: UUID загрузки + in: path + name: upload_id + required: true + type: string + - description: Номер части (с 1) + in: path + name: part_number + required: true + type: integer + - description: Байты файла в теле запроса, без JSON-обёртки и кодирования Base64 + in: body + name: content + required: true + schema: + type: string + - description: Размер тела запроса в байтах + format: int64 + in: header + minimum: 1 + name: Content-Length + required: true + type: integer + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.UploadPartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Загрузить часть файла + tags: + - uploads + /external/v2/uploads/multipart/{upload_id}/abort: + post: + description: Отменяет незавершённую загрузку и удаляет её части. Диск должен + принадлежать одной из компаний пользователя, указанных в токене. + parameters: + - description: UUID загрузки + in: path + name: upload_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.MultipartFinishedResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Отменить загрузку файла по частям + tags: + - uploads + /external/v2/uploads/multipart/{upload_id}/complete: + post: + description: Собирает загруженные части в файл версии документа. Диск должен + принадлежать одной из компаний пользователя, указанных в токене. + parameters: + - description: UUID загрузки + in: path + name: upload_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.MultipartFinishedResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/apperrors.APIError401' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Завершить загрузку файла по частям + tags: + - uploads + /internal/v1/async-operations: + get: + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/move.OperationListResponse' + summary: Список async-операций (internal) + tags: + - async-operations-internal + /internal/v1/async-operations/{id}: + get: + parameters: + - description: UUID операции + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/move.StatusResponse' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Статус async-операции (internal) + tags: + - async-operations-internal + /internal/v1/async-operations/{id}/cancel: + post: + parameters: + - description: UUID операции + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "202": + description: Отмена запрошена + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Отменить async-операцию (internal) + tags: + - async-operations-internal + /internal/v1/bundles/{bundle_id}/{key}/upload_multipart: + post: + description: 'Легаси-совместимый init: активный незавершённый upload той же + цели супersед-ится.' + parameters: + - description: UUID бандла + in: path + name: bundle_id + required: true + type: string + - description: Ключ датасорса + in: path + name: key + required: true + type: string + - description: 'Только для датасорса типа folder (облака точек, тайлы): относительный + путь файла внутри него' + in: query + name: path + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.StartMultipartInternalResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Начать multipart-загрузку (internal) + tags: + - bundles-internal + /internal/v1/bundles/{bundle_id}/attributes: + patch: + consumes: + - application/json + description: 'ВНИМАНИЕ, легаси-поведение: заменяет JSONB атрибутов обработки + и для геопривязываемых типов (облака точек) ПЕРЕЗАПУСКАЕТ workflow-пайплайн + (создаёт tiles-датасорс и переигрывает задачу геопривязки); для остальных + типов проставляет workflow_status=skipped. Это не пользовательские атрибуты + документа (те — PUT /documents/{id}/attributes).' + parameters: + - description: UUID бандла + in: path + name: bundle_id + required: true + type: string + - description: Атрибуты + in: body + name: request + required: true + schema: + $ref: '#/definitions/bundle.UpdateAttributesRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.UpdateAttributesOutput' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Обновить атрибуты обработки бандла + tags: + - bundles-internal + /internal/v1/bundles/{bundle_id}/copy: + post: + consumes: + - application/json + description: 'DEPRECATED. Повторяет семантику старого POST /bundles/{id}/copy: + create-vs-reuse по имени, синхронное ожидание до дедлайна; ответ — легаси-тело + документа либо заглушка при 202-таймауте. Дельта от легаси: параметр use_source_bundle_as_copied_from + не поддержан — bundle_copied_from проставляется ВСЕГДА (маркер происхождения + копии; по нему наследуются согласования).' + parameters: + - description: UUID исходного бандла + in: path + name: bundle_id + required: true + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.LegacyBundleCopyRequest' + produces: + - application/json + responses: + "200": + description: Легаси-тело документа + schema: + $ref: '#/definitions/copy.LegacyDocument' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Легаси-копия бандла (compat-шим) + tags: + - copy-internal + /internal/v1/bundles/{bundle_id}/datasources/{key}/ensure: + post: + consumes: + - application/json + description: 'Создаёт запись датасорса, если её нет; существующей обновляет + имя. Идемпотентно. Основной потребитель — filestreamer (documentation-api): + его upload-хендлеры регистрируют датасорс через этот эндпоинт, чтобы запись + и outbox-событие происходили в cde-api.' + parameters: + - description: UUID бандла + in: path + name: bundle_id + required: true + type: string + - description: Ключ датасорса + in: path + name: key + required: true + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/bundle.EnsureDataSourceRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.EnsureDataSourceResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Гарантировать датасорс по ключу + tags: + - bundles-internal + /internal/v1/bundles/{bundle_id}/workflow: + post: + consumes: + - application/json + description: 'Специфичный эндпоинт сценария «Сравнение» (deviation): регистрирует + workflow, созданный внешне в workflows-api, за бандлом и публикует workflow.assigned. + Не общий механизм привязки произвольных workflow.' + parameters: + - description: UUID бандла + in: path + name: bundle_id + required: true + type: string + - description: ID workflow + in: body + name: request + required: true + schema: + $ref: '#/definitions/bundle.AddWorkflowRequest' + produces: + - application/json + responses: + "204": + description: Привязан + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Привязать deviation-workflow к бандлу + tags: + - bundles-internal + /internal/v1/bundles/copy: + post: + consumes: + - application/json + description: 'Для ожидания результата в том же запросе передайте заголовок Prefer: + wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за + это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. + HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status + и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время + итоговый результат не получен возвращается HTTP 202 с operation_id, без результата + операции; дальнейший статус проверяйте через GET /async-operations/{id} в + том же контуре и версии API. Истечение времени ожидания не отменяет операцию.' + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.NewDocumentRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Копия версии в новый документ (internal) + tags: + - copy-internal + /internal/v1/bundles/copy-to-document: + post: + consumes: + - application/json + description: 'Для ожидания результата в том же запросе передайте заголовок Prefer: + wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за + это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. + HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status + и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время + итоговый результат не получен возвращается HTTP 202 с operation_id, без результата + операции; дальнейший статус проверяйте через GET /async-operations/{id} в + том же контуре и версии API. Истечение времени ожидания не отменяет операцию.' + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.ToDocumentRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Копия версии в существующий документ (internal) + tags: + - copy-internal + /internal/v1/disks: + post: + consumes: + - application/json + description: 'Создаёт диск: имя и бакет выводятся из компании, создаётся S3-бакет + и корневой документ.' + parameters: + - description: Параметры диска + in: body + name: request + required: true + schema: + $ref: '#/definitions/disk.CreateInternalRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/disk.CreateInternalResponse' + "400": + description: Компания/админы не найдены + schema: + $ref: '#/definitions/apperrors.APIError400' + "409": + description: Бакет уже существует + schema: + $ref: '#/definitions/apperrors.APIError409' + "422": + description: Unprocessable Entity + schema: + $ref: '#/definitions/apperrors.APIError422' + "502": + description: Каталог пользователей недоступен + schema: + $ref: '#/definitions/apperrors.APIError502' + summary: Создать диск (internal) + tags: + - disks-internal + /internal/v1/documents/: + post: + consumes: + - application/json + description: 'Легаси-совместимое внутреннее создание: документ + скелет бандла + с датасорсами по типу.' + parameters: + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.CreateInternalRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.CreateInternalResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Создать документ (internal) + tags: + - documents-internal + /internal/v1/documents/{document_id}: + delete: + parameters: + - description: ID документа + in: path + name: document_id + required: true + type: integer + produces: + - application/json + responses: + "200": + description: Удалён + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Удалить документ (internal) + tags: + - documents-internal + /internal/v1/documents/{document_id}/move_bundles: + patch: + consumes: + - application/json + description: 'Для ожидания результата в том же запросе передайте заголовок Prefer: + wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за + это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. + HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status + и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время + итоговый результат не получен возвращается HTTP 202 с operation_id, без результата + операции; дальнейший статус проверяйте через GET /async-operations/{id} в + том же контуре и версии API. Истечение времени ожидания не отменяет операцию.' + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: ID целевого документа + in: path + name: document_id + required: true + type: integer + - description: Идентификаторы версий документа + in: body + name: request + required: true + schema: + $ref: '#/definitions/move.MoveBundlesRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/move.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Перенести версии (internal) + tags: + - move-internal + /internal/v1/documents/{id}/copy: + post: + consumes: + - application/json + description: 'Для ожидания результата в том же запросе передайте заголовок Prefer: + wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за + это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. + HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status + и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время + итоговый результат не получен возвращается HTTP 202 с operation_id, без результата + операции; дальнейший статус проверяйте через GET /async-operations/{id} в + том же контуре и версии API. Истечение времени ожидания не отменяет операцию.' + parameters: + - description: ID корня + in: path + name: id + required: true + type: integer + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.SubtreeRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Копия поддерева (internal) + tags: + - copy-internal + /internal/v1/documents/copy: + post: + consumes: + - application/json + description: 'Для ожидания результата в том же запросе передайте заголовок Prefer: + wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за + это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. + HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status + и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время + итоговый результат не получен возвращается HTTP 202 с operation_id, без результата + операции; дальнейший статус проверяйте через GET /async-operations/{id} в + том же контуре и версии API. Истечение времени ожидания не отменяет операцию.' + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/copy.SelectionRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/copy.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Копия выбранных узлов (internal) + tags: + - copy-internal + /internal/v1/documents/move: + post: + consumes: + - application/json + description: 'Для ожидания результата в том же запросе передайте заголовок Prefer: + wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за + это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. + HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status + и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время + итоговый результат не получен возвращается HTTP 202 с operation_id, без результата + операции; дальнейший статус проверяйте через GET /async-operations/{id} в + том же контуре и версии API. Истечение времени ожидания не отменяет операцию.' + parameters: + - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. + HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей + проверки статуса + in: header + name: Prefer + type: string + - description: Манифест + in: body + name: request + required: true + schema: + $ref: '#/definitions/move.MoveRequest' + produces: + - application/json + responses: + "200": + description: 'Итоговый статус получен за время Prefer: wait=N. Результат + операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного + выполнения' + schema: + $ref: '#/definitions/move.StatusResponse' + "202": + description: 'Операция принята: возвращается operation_id без итогового + результата. Ожидание не запрошено либо итоговый результат не получен за + отведённое время' + schema: + $ref: '#/definitions/move.StartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Переместить документы (internal) + tags: + - move-internal + /internal/v1/documents/resolve_relative_path: + post: + consumes: + - application/json + description: 'Используется flows-backend в согласованиях: для каждого документа + находит (или создаёт при should_folder_be_created) папку по relative_path + относительно папки документа — туда раскладываются согласованные документы.' + parameters: + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.ResolveRelativePathRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.ResolveRelativePathResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "403": + description: Forbidden + schema: + $ref: '#/definitions/apperrors.APIError403' + summary: Резолв относительного пути + tags: + - documents-internal + /internal/v1/documents/super_create: + post: + consumes: + - application/json + description: Документ + N бандлов, сразу помеченных uploaded (контент уже в + S3). Админ-гейт остаётся на doc-api. + parameters: + - description: Параметры + in: body + name: request + required: true + schema: + $ref: '#/definitions/document.SuperCreateRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/document.SuperCreateResponse' + "400": + description: Гейты структуры / диск не найден / расширения + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + "409": + description: Conflict + schema: + $ref: '#/definitions/apperrors.APIError409' + summary: Super create (internal) + tags: + - documents-internal + /internal/v1/pages: + post: + consumes: + - application/json + description: Регистрирует страницу и тамбнейл, произведённые пайплайном обработки. + parameters: + - description: Параметры страницы + in: body + name: request + required: true + schema: + $ref: '#/definitions/page.CreateRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/page.CreateResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Создать страницу (internal) + tags: + - pages-internal + /internal/v1/s3/file: + delete: + description: Удаляет объект и связанную датасорс-запись по пути bucket/key (легаси + DELETE /s3/file). + parameters: + - description: 'Путь объекта: bucket/key' + in: query + name: path + required: true + type: string + produces: + - application/json + responses: + "204": + description: Удалён + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Удалить файл из S3 + tags: + - bundles-internal + /internal/v1/upload_finish/bundles/{bundle_id}: + post: + description: 'Внутренний finish: пересчитывает размер по фактическим объектам; + вариант с /{key} — по одному датасорсу.' + parameters: + - description: UUID бандла + in: path + name: bundle_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.CompleteUploadResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Завершить загрузку (internal) + tags: + - bundles-internal + /internal/v1/upload_finish/bundles/{bundle_id}/{key}: + post: + description: 'Внутренний finish: пересчитывает размер по фактическим объектам; + вариант с /{key} — по одному датасорсу.' + parameters: + - description: UUID бандла + in: path + name: bundle_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/bundle.CompleteUploadResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Завершить загрузку (internal) + tags: + - bundles-internal + /internal/v1/uploads/multipart/{upload_id}/{part_number}: + post: + consumes: + - application/octet-stream + description: 'Часть файла передаётся сырым телом с Content-Type: application/octet-stream + и Content-Length. Размер каждой части, кроме последней, должен быть не менее + 5 МиБ. Доверенный внутренний маршрут без авторизации пользователя.' + parameters: + - description: Идентификатор загрузки + in: path + name: upload_id + required: true + type: string + - description: Номер части (с 1) + in: path + name: part_number + required: true + type: integer + - description: Байты файла в теле запроса, без JSON-обёртки и кодирования Base64 + in: body + name: content + required: true + schema: + type: string + - description: Размер тела запроса в байтах + format: int64 + in: header + minimum: 1 + name: Content-Length + required: true + type: integer + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.UploadPartResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Загрузить часть файла + tags: + - uploads + /internal/v1/uploads/multipart/{upload_id}/abort: + post: + description: Отменяет незавершённую загрузку и удаляет её части. Доверенный + внутренний маршрут без авторизации пользователя. + parameters: + - description: Идентификатор загрузки + in: path + name: upload_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.MultipartFinishedResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Отменить загрузку файла по частям + tags: + - uploads + /internal/v1/uploads/multipart/{upload_id}/complete: + post: + description: Собирает загруженные части в файл версии документа. Доверенный + внутренний маршрут без авторизации пользователя. + parameters: + - description: Идентификатор загрузки + in: path + name: upload_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/upload.MultipartFinishedResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Завершить загрузку файла по частям + tags: + - uploads + /internal/v1/workflows/{wf_id}: + post: + consumes: + - application/json + description: 'Колбэк последней задачи пайплайна, вызывается только при успехе: + помечает workflow и его бандл done (write-side кэш статуса; события не публикуются + — статус workflow принадлежит workflows-api).' + parameters: + - description: UUID workflow + in: path + name: wf_id + required: true + type: string + produces: + - application/json + responses: + "200": + description: Принято + "400": + description: Bad Request + schema: + $ref: '#/definitions/apperrors.APIError400' + "404": + description: Not Found + schema: + $ref: '#/definitions/apperrors.APIError404' + summary: Финализация workflow (internal) + tags: + - workflows-internal +securityDefinitions: + UserToken: + in: header + name: Authorization + type: apiKey +swagger: "2.0" diff --git a/apps/documentations/d8-ugmk-prod/cde-api.yaml b/apps/documentations/d8-ugmk-prod/cde-api.yaml new file mode 100644 index 0000000..06e1e24 --- /dev/null +++ b/apps/documentations/d8-ugmk-prod/cde-api.yaml @@ -0,0 +1,299 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api + namespace: documentations +spec: + values: + services: + cde-api: + envs: + - name: CDE_API_RESOURCES_BASE_URL + value: + _default: "http://iams.iam.svc.cluster.local:8080" + - name: CDE_API_RESOURCES_TIMEOUT + value: + _default: "10s" + - name: CDE_API_APP_NAME + value: + _default: "cde-api" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "debug" + - name: CDE_API_HTTP_PORT + value: + _default: "8000" + - name: CDE_API_HTTP_READ_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_WRITE_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_IDLE_TIMEOUT + value: + _default: "120s" + - name: CDE_API_HTTP_READ_BUFFER_SIZE + value: + _default: "96" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_PUBLIC_LINK_HOST + value: + _default: "https://sarex-document-link.uralmine.com" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://backend-svc.processing.svc.cluster.local:80" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_RETRY_WAIT_MS + value: + _default: "500" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:80" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:80" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_RETRY_WAIT_MS + value: + _default: "1000" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://backend-svc.workspaces.svc.cluster.local:80" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://backend-svc.system-log.svc.cluster.local:80" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend-svc.django.svc.cluster.local:80" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_EAV_HOST + value: + _default: "http://backend-svc.eav.svc.cluster.local:80" + - name: CDE_API_EAV_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://backend-api-svc.documentations.svc.cluster.local:80" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_COPY_MAX_SYNC_WAIT_MS + value: + _default: "300000" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "10" + - name: CDE_API_DIAGNOSTICS_SLOW_OPERATION_THRESHOLD + value: + _default: "30s" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_REDIS__DB + value: + _default: "5" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "10" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "2" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_CONNECT_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S3_TLS_HANDSHAKE_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S32D_MAX_ARCHIVE_SIZE_BYTES + value: + _default: "1099511627776" + - name: CDE_API_S32D_MAX_FILES_COUNT + value: + _default: "500" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_USERS_BASE_URL + value: + _default: "http://backend-svc.django.svc.cluster.local:80" + - name: CDE_API_DISK_BUCKET_NAMESPACE + value: + _default: "documentations-prod" + - name: CDE_API_USERS_ORIGINATOR + value: + _default: "docs_prod" + - name: CDE_API_USERS_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_MAILER_RETRY_COUNT + value: + _default: "2" + - name: CDE_API_MAILER_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-svc.flows.svc.cluster.local:80" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_RABBITMQ__HOST + value: + _default: "rabbitmq.rabbitmq.svc.cluster.local" + - name: CDE_API_RABBITMQ__PORT + value: + _default: "5672" diff --git a/apps/documentations/d8-ugmk-prod/kustomization.yaml b/apps/documentations/d8-ugmk-prod/kustomization.yaml index c9bae98..4ec96db 100644 --- a/apps/documentations/d8-ugmk-prod/kustomization.yaml +++ b/apps/documentations/d8-ugmk-prod/kustomization.yaml @@ -16,4 +16,8 @@ patches: - path: pdf-markings-amqp.yaml target: kind: HelmRelease - name: documentations-pdf-markings-amqp \ No newline at end of file + name: documentations-pdf-markings-amqp + - path: cde-api.yaml + target: + kind: HelmRelease + name: cde-api \ No newline at end of file diff --git a/apps/documentations/ugok/cde-api-worker-copy.yaml b/apps/documentations/ugok/cde-api-worker-copy.yaml new file mode 100644 index 0000000..0b1044b --- /dev/null +++ b/apps/documentations/ugok/cde-api-worker-copy.yaml @@ -0,0 +1,388 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-copy + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.9" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-copy: + enabled: true + deployment: + enabled: true + name: + _default: worker-copy + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 100m + memory: + _default: 64Mi + image: + name: + _default: 10.4.10.187:80/library/cde-api-worker-copy:ugok_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: dockerhub + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-copy" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-copy" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:8000" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://backend-svc.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_ISSUES_SYNC_ENABLED + value: + _default: "false" + - name: CDE_API_ISSUES_BASE_URL + value: + _default: "http://issues-service.platform:8000" + - name: CDE_API_ISSUES_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_ISSUES_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_COPY_WORKER_JOBS + value: + _default: "" + - name: CDE_API_COPY_JOB_TIMEOUT_MINUTES + value: + _default: "30" + - name: CDE_API_COPY_STEP_PARALLELISM + value: + _default: "1" + - name: CDE_API_COPY_S3_PARALLELISM + value: + _default: "1" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "postgres-service" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations_db" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "documentations-postgresql-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "documentations-postgresql-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "endpoint" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "access_key" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "secret_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + - name: CDE_API_RABBITMQ__HOST + secretName: + _default: "documentations-rabbitmq-secret" + secretKey: + _default: "host" + - name: CDE_API_RABBITMQ__PORT + secretName: + _default: "documentations-rabbitmq-secret" + secretKey: + _default: "port" + - name: CDE_API_RABBITMQ__USER + secretName: + _default: "documentations-rabbitmq-secret" + secretKey: + _default: "username" + - name: CDE_API_RABBITMQ__PASSWORD + secretName: + _default: "documentations-rabbitmq-secret" + secretKey: + _default: "password" + - name: CDE_API_RABBITMQ__VHOST + secretName: + _default: "documentations-rabbitmq-secret" + secretKey: + _default: "vhost" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/ugok/cde-api-worker-move.yaml b/apps/documentations/ugok/cde-api-worker-move.yaml new file mode 100644 index 0000000..93c6d03 --- /dev/null +++ b/apps/documentations/ugok/cde-api-worker-move.yaml @@ -0,0 +1,370 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-move + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.9" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-move: + enabled: true + deployment: + enabled: true + name: + _default: worker-move + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 100m + memory: + _default: 64Mi + image: + name: + _default: 10.4.10.187:80/library/cde-api-worker-move:ugok_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: dockerhub + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-move" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-move" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:8000" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "10" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://backend-svc.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_MOVE_WORKER_JOBS + value: + _default: "" + - name: CDE_API_MOVE_JOB_TIMEOUT_MINUTES + value: + _default: "30" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "postgres-service" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations_db" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "documentations-postgresql-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "documentations-postgresql-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "endpoint" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "access_key" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "secret_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + - name: CDE_API_RABBITMQ__HOST + secretName: + _default: "documentations-rabbitmq-secret" + secretKey: + _default: "host" + - name: CDE_API_RABBITMQ__PORT + secretName: + _default: "documentations-rabbitmq-secret" + secretKey: + _default: "port" + - name: CDE_API_RABBITMQ__USER + secretName: + _default: "documentations-rabbitmq-secret" + secretKey: + _default: "username" + - name: CDE_API_RABBITMQ__PASSWORD + secretName: + _default: "documentations-rabbitmq-secret" + secretKey: + _default: "password" + - name: CDE_API_RABBITMQ__VHOST + secretName: + _default: "documentations-rabbitmq-secret" + secretKey: + _default: "vhost" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/ugok/cde-api-worker-s32d-create-upload.yaml b/apps/documentations/ugok/cde-api-worker-s32d-create-upload.yaml new file mode 100644 index 0000000..04411c9 --- /dev/null +++ b/apps/documentations/ugok/cde-api-worker-s32d-create-upload.yaml @@ -0,0 +1,258 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-create-upload + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.9" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-create-upload: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-create-upload + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 200m + memory: + _default: 256Mi + image: + name: + _default: 10.4.10.187:80/library/cde-api-worker-s32d-create-upload:ugok_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: dockerhub + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-create-upload" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-create-upload" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_READERAT_BLOCK_SIZE_MB + value: + _default: "8" + - name: CDE_API_S32D_READERAT_CACHE_BLOCKS + value: + _default: "8" + - name: CDE_API_S32D_WORKER_CREATE_UPLOAD_TIMEOUT_MIN + value: + _default: "240" + - name: CDE_API_S32D_WORKER_CREATE_UPLOAD_MAX_JOBS + value: + _default: "2" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "postgres-service" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations_db" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "documentations-postgresql-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "documentations-postgresql-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "endpoint" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "access_key" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "secret_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/ugok/cde-api-worker-s32d-handle-error.yaml b/apps/documentations/ugok/cde-api-worker-s32d-handle-error.yaml new file mode 100644 index 0000000..8578e44 --- /dev/null +++ b/apps/documentations/ugok/cde-api-worker-s32d-handle-error.yaml @@ -0,0 +1,252 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-handle-error + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.9" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-handle-error: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-handle-error + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 50m + memory: + _default: 64Mi + image: + name: + _default: 10.4.10.187:80/library/cde-api-worker-s32d-handle-error:ugok_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: dockerhub + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-handle-error" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-handle-error" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "2" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_WORKER_HANDLE_ERROR_TIMEOUT_MIN + value: + _default: "10" + - name: CDE_API_S32D_WORKER_HANDLE_ERROR_MAX_JOBS + value: + _default: "4" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "postgres-service" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations_db" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "documentations-postgresql-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "documentations-postgresql-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "endpoint" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "access_key" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "secret_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/ugok/cde-api-worker-s32d-process-workflows.yaml b/apps/documentations/ugok/cde-api-worker-s32d-process-workflows.yaml new file mode 100644 index 0000000..994208c --- /dev/null +++ b/apps/documentations/ugok/cde-api-worker-s32d-process-workflows.yaml @@ -0,0 +1,321 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-process-workflows + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.9" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-process-workflows: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-process-workflows + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 200m + memory: + _default: 256Mi + image: + name: + _default: 10.4.10.187:80/library/cde-api-worker-s32d-process-workflows:ugok_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: dockerhub + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-process-workflows" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-process-workflows" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_WORKER_PROCESS_WORKFLOWS_TIMEOUT_MIN + value: + _default: "480" + - name: CDE_API_S32D_WORKER_PROCESS_WORKFLOWS_MAX_JOBS + value: + _default: "2" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "postgres-service" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations_db" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "documentations-postgresql-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "documentations-postgresql-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "endpoint" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "access_key" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "secret_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/ugok/cde-api-worker-s32d-publish-documents.yaml b/apps/documentations/ugok/cde-api-worker-s32d-publish-documents.yaml new file mode 100644 index 0000000..5b05a83 --- /dev/null +++ b/apps/documentations/ugok/cde-api-worker-s32d-publish-documents.yaml @@ -0,0 +1,267 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-publish-documents + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.9" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-publish-documents: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-publish-documents + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 100m + memory: + _default: 64Mi + image: + name: + _default: 10.4.10.187:80/library/cde-api-worker-s32d-publish-documents:ugok_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: dockerhub + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-publish-documents" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-publish-documents" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_WORKER_PUBLISH_DOCUMENTS_TIMEOUT_MIN + value: + _default: "10" + - name: CDE_API_S32D_WORKER_PUBLISH_DOCUMENTS_MAX_JOBS + value: + _default: "2" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:8000" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://backend-svc.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "postgres-service" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations_db" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "documentations-postgresql-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "documentations-postgresql-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "endpoint" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "access_key" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "secret_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/ugok/cde-api.yaml b/apps/documentations/ugok/cde-api.yaml new file mode 100644 index 0000000..1a33be3 --- /dev/null +++ b/apps/documentations/ugok/cde-api.yaml @@ -0,0 +1,458 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.9" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + cde-api: + enabled: true + deployment: + enabled: true + name: + _default: cde-api + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + port: + _default: 8000 + resources: + requests: + cpu: + _default: 200m + memory: + _default: 256Mi + image: + name: + _default: 10.4.10.187:80/library/cde-api:ugok_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: true + name: + _default: cde-api + type: + _default: ClusterIP + port: + _default: 8000 + targetPort: + _default: 8000 + portName: + _default: http + imagePullSecrets: + enabled: + _default: true + name: + _default: dockerhub + envs: + - name: CDE_API_RESOURCES_BASE_URL + value: + _default: "http://iams.iam.svc.cluster.local:8080" + - name: CDE_API_RESOURCES_TIMEOUT + value: + _default: "10s" + - name: CDE_API_APP_NAME + value: + _default: "cde-api" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "debug" + - name: CDE_API_HTTP_PORT + value: + _default: "8000" + - name: CDE_API_HTTP_READ_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_WRITE_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_IDLE_TIMEOUT + value: + _default: "120s" + - name: CDE_API_HTTP_READ_BUFFER_SIZE + value: + _default: "96" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_PUBLIC_LINK_HOST + value: + _default: "https://ugok-document-link-sarex.uralmine.com" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_RETRY_WAIT_MS + value: + _default: "500" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_RETRY_WAIT_MS + value: + _default: "1000" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://backend-svc.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:8000" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_EAV_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_COPY_MAX_SYNC_WAIT_MS + value: + _default: "300000" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "10" + - name: CDE_API_DIAGNOSTICS_SLOW_OPERATION_THRESHOLD + value: + _default: "30s" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_REDIS__DB + value: + _default: "5" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "10" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "2" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_CONNECT_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S3_TLS_HANDSHAKE_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S32D_MAX_ARCHIVE_SIZE_BYTES + value: + _default: "1099511627776" + - name: CDE_API_S32D_MAX_FILES_COUNT + value: + _default: "500" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_USERS_BASE_URL + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_DISK_BUCKET_NAMESPACE + value: + _default: "documentations-prod" + - name: CDE_API_USERS_ORIGINATOR + value: + _default: "docs_prod" + - name: CDE_API_USERS_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_MAILER_RETRY_COUNT + value: + _default: "2" + - name: CDE_API_MAILER_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "postgres-service" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations_db" + secretEnvs: + - name: CDE_API_PUBLIC_KEY + secretName: + _default: "public-key" + secretKey: + _default: "key" + - name: CDE_API_DATABASE__USER + secretName: + _default: "documentations-postgresql-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "documentations-postgresql-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "endpoint" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "access_key" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "documentations-s3-secret" + secretKey: + _default: "secret_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + - name: CDE_API_USERS_AUTH_TOKEN + secretName: + _default: "django-auth" + secretKey: + _default: "key" + - name: CDE_API_RABBITMQ__HOST + secretName: + _default: "documentations-rabbitmq-secret" + secretKey: + _default: "host" + - name: CDE_API_RABBITMQ__PORT + secretName: + _default: "documentations-rabbitmq-secret" + secretKey: + _default: "port" + - name: CDE_API_RABBITMQ__USER + secretName: + _default: "documentations-rabbitmq-secret" + secretKey: + _default: "username" + - name: CDE_API_RABBITMQ__PASSWORD + secretName: + _default: "documentations-rabbitmq-secret" + secretKey: + _default: "password" + - name: CDE_API_RABBITMQ__VHOST + secretName: + _default: "documentations-rabbitmq-secret" + secretKey: + _default: "vhost" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/ugok/kustomization.yaml b/apps/documentations/ugok/kustomization.yaml index 7c68d88..b40c08a 100644 --- a/apps/documentations/ugok/kustomization.yaml +++ b/apps/documentations/ugok/kustomization.yaml @@ -13,3 +13,11 @@ resources: - pdf-markings-amqp.yaml - pdf-markings.yaml - frontend.yaml + - tasks-execution-config.yaml + - cde-api.yaml + - cde-api-worker-s32d-create-upload.yaml + - cde-api-worker-s32d-process-workflows.yaml + - cde-api-worker-s32d-publish-documents.yaml + - cde-api-worker-s32d-handle-error.yaml + - cde-api-worker-copy.yaml + - cde-api-worker-move.yaml diff --git a/apps/documentations/ugok/tasks-execution-config.yaml b/apps/documentations/ugok/tasks-execution-config.yaml new file mode 100644 index 0000000..f4fa140 --- /dev/null +++ b/apps/documentations/ugok/tasks-execution-config.yaml @@ -0,0 +1,180 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: tasks-execution-config-documentation-v2 + namespace: documentations +data: + tasks-execution-config-documentation-v2.json: | + { + "bim_api_metadata_inserter": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_api_metadata_inserter_v2": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_api_metadata_inserter_v4": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_differ": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_updater": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "convert_to_potree": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "docx_to_pdf": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "dwg_to_geojson": { + "executor": "k8s", + "resources": { + "cpu_limits": "4", + "cpu_requests": "100m", + "memory_limits": "40Gi", + "memory_requests": "64Mi" + } + }, + "e57_to_las": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "ifc_converter_job": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "las_merge": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "mesh_optimizer": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "mesh_optimizer_v2": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "parsing_template": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "processing_converter_to_tiles": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "processing_create_colored_surface_from_geotiff": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "rendering_template": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "split_pdf_document": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "split_pdf_document_legacy": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "update_orthomosaic_data": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "web_hook_caller": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "xml_to_glb": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "document_converter": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "sparkjs_converter_wrapper": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + } + } diff --git a/apps/documentations/uralkal/cde-api.yaml b/apps/documentations/uralkal/cde-api.yaml new file mode 100644 index 0000000..50fd1f4 --- /dev/null +++ b/apps/documentations/uralkal/cde-api.yaml @@ -0,0 +1,299 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api + namespace: documentations +spec: + values: + services: + cde-api: + envs: + - name: CDE_API_RESOURCES_BASE_URL + value: + _default: "http://iams.iam.svc.cluster.local:8080" + - name: CDE_API_RESOURCES_TIMEOUT + value: + _default: "10s" + - name: CDE_API_APP_NAME + value: + _default: "cde-api" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "debug" + - name: CDE_API_HTTP_PORT + value: + _default: "8000" + - name: CDE_API_HTTP_READ_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_WRITE_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_IDLE_TIMEOUT + value: + _default: "120s" + - name: CDE_API_HTTP_READ_BUFFER_SIZE + value: + _default: "96" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_PUBLIC_LINK_HOST + value: + _default: "https://document-link.sarex.local.uralkali.com" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://backend-svc.processing.svc.cluster.local:80" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_RETRY_WAIT_MS + value: + _default: "500" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:80" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:80" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_RETRY_WAIT_MS + value: + _default: "1000" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://backend-svc.workspaces.svc.cluster.local:80" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://backend-svc.system-log.svc.cluster.local:80" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend-svc.django.svc.cluster.local:80" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_EAV_HOST + value: + _default: "http://backend-svc.eav.svc.cluster.local:80" + - name: CDE_API_EAV_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://backend-api-svc.documentations.svc.cluster.local:80" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_COPY_MAX_SYNC_WAIT_MS + value: + _default: "300000" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "10" + - name: CDE_API_DIAGNOSTICS_SLOW_OPERATION_THRESHOLD + value: + _default: "30s" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_REDIS__DB + value: + _default: "5" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "10" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "2" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_CONNECT_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S3_TLS_HANDSHAKE_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S32D_MAX_ARCHIVE_SIZE_BYTES + value: + _default: "1099511627776" + - name: CDE_API_S32D_MAX_FILES_COUNT + value: + _default: "500" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_USERS_BASE_URL + value: + _default: "http://backend-svc.django.svc.cluster.local:80" + - name: CDE_API_DISK_BUCKET_NAMESPACE + value: + _default: "documentations-prod" + - name: CDE_API_USERS_ORIGINATOR + value: + _default: "docs_prod" + - name: CDE_API_USERS_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_MAILER_RETRY_COUNT + value: + _default: "2" + - name: CDE_API_MAILER_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-svc.flows.svc.cluster.local:80" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_RABBITMQ__HOST + value: + _default: "rabbitmq.rabbitmq.svc.cluster.local" + - name: CDE_API_RABBITMQ__PORT + value: + _default: "5672" diff --git a/apps/documentations/uralkal/kustomization.yaml b/apps/documentations/uralkal/kustomization.yaml index 25b1091..07d5b30 100644 --- a/apps/documentations/uralkal/kustomization.yaml +++ b/apps/documentations/uralkal/kustomization.yaml @@ -27,3 +27,7 @@ patches: target: kind: HelmRelease name: pdm-api + - path: cde-api.yaml + target: + kind: HelmRelease + name: cde-api diff --git a/apps/documentations/vad/cde-api.yaml b/apps/documentations/vad/cde-api.yaml new file mode 100644 index 0000000..4aac567 --- /dev/null +++ b/apps/documentations/vad/cde-api.yaml @@ -0,0 +1,299 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api + namespace: documentations +spec: + values: + services: + cde-api: + envs: + - name: CDE_API_RESOURCES_BASE_URL + value: + _default: "http://iams.iam.svc.cluster.local:8080" + - name: CDE_API_RESOURCES_TIMEOUT + value: + _default: "10s" + - name: CDE_API_APP_NAME + value: + _default: "cde-api" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "debug" + - name: CDE_API_HTTP_PORT + value: + _default: "8000" + - name: CDE_API_HTTP_READ_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_WRITE_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_IDLE_TIMEOUT + value: + _default: "120s" + - name: CDE_API_HTTP_READ_BUFFER_SIZE + value: + _default: "96" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_PUBLIC_LINK_HOST + value: + _default: "https://sarex-document-link.vadroad.ru" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://backend-svc.processing.svc.cluster.local:80" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_RETRY_WAIT_MS + value: + _default: "500" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:80" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-svc.bim.svc.cluster.local:80" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_RETRY_WAIT_MS + value: + _default: "1000" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://backend-svc.workspaces.svc.cluster.local:80" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://backend-svc.system-log.svc.cluster.local:80" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend-svc.django.svc.cluster.local:80" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_EAV_HOST + value: + _default: "http://backend-svc.eav.svc.cluster.local:80" + - name: CDE_API_EAV_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://backend-api-svc.documentations.svc.cluster.local:80" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_COPY_MAX_SYNC_WAIT_MS + value: + _default: "300000" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "10" + - name: CDE_API_DIAGNOSTICS_SLOW_OPERATION_THRESHOLD + value: + _default: "30s" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_REDIS__DB + value: + _default: "5" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "10" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "2" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_CONNECT_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S3_TLS_HANDSHAKE_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S32D_MAX_ARCHIVE_SIZE_BYTES + value: + _default: "1099511627776" + - name: CDE_API_S32D_MAX_FILES_COUNT + value: + _default: "500" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_USERS_BASE_URL + value: + _default: "http://backend-svc.django.svc.cluster.local:80" + - name: CDE_API_DISK_BUCKET_NAMESPACE + value: + _default: "documentations-prod" + - name: CDE_API_USERS_ORIGINATOR + value: + _default: "docs_prod" + - name: CDE_API_USERS_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_MAILER_RETRY_COUNT + value: + _default: "2" + - name: CDE_API_MAILER_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-svc.flows.svc.cluster.local:80" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_RABBITMQ__HOST + value: + _default: "rabbitmq.rabbitmq.svc.cluster.local" + - name: CDE_API_RABBITMQ__PORT + value: + _default: "5672" diff --git a/apps/documentations/vad/kustomization.yaml b/apps/documentations/vad/kustomization.yaml index 093516b..68a7147 100644 --- a/apps/documentations/vad/kustomization.yaml +++ b/apps/documentations/vad/kustomization.yaml @@ -15,3 +15,7 @@ patches: target: kind: HelmRelease name: documentations-pdf-markings-amqp + - path: cde-api.yaml + target: + kind: HelmRelease + name: cde-api diff --git a/apps/documentations/wb/cde-api-worker-copy.yaml b/apps/documentations/wb/cde-api-worker-copy.yaml new file mode 100644 index 0000000..12b224f --- /dev/null +++ b/apps/documentations/wb/cde-api-worker-copy.yaml @@ -0,0 +1,382 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-copy + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-copy: + enabled: true + deployment: + enabled: true + name: + _default: worker-copy + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 100m + memory: + _default: 64Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-copy:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: dockerhub + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-copy" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-copy" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:8000" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://workspaces-service.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_ISSUES_SYNC_ENABLED + value: + _default: "false" + - name: CDE_API_ISSUES_BASE_URL + value: + _default: "http://issues-service.platform:8000" + - name: CDE_API_ISSUES_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_ISSUES_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_COPY_WORKER_JOBS + value: + _default: "" + - name: CDE_API_COPY_JOB_TIMEOUT_MINUTES + value: + _default: "30" + - name: CDE_API_COPY_STEP_PARALLELISM + value: + _default: "1" + - name: CDE_API_COPY_S3_PARALLELISM + value: + _default: "1" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "sarex-vpsql-01.xc.wb.ru" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations_db" + - name: CDE_API_RABBITMQ__HOST + value: + _default: "rabbitmq.rabbitmq.svc.cluster.local" + - name: CDE_API_RABBITMQ__PORT + value: + _default: "5672" + - name: CDE_API_RABBITMQ__VHOST + value: + _default: "cde" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "yc-s3" + secretKey: + _default: "endpoint_url" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "key_id" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "access_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + - name: CDE_API_RABBITMQ__USER + secretName: + _default: "hasher-rabbitmq-secret" + secretKey: + _default: "user" + - name: CDE_API_RABBITMQ__PASSWORD + secretName: + _default: "hasher-rabbitmq-secret" + secretKey: + _default: "password" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/wb/cde-api-worker-move.yaml b/apps/documentations/wb/cde-api-worker-move.yaml new file mode 100644 index 0000000..6540257 --- /dev/null +++ b/apps/documentations/wb/cde-api-worker-move.yaml @@ -0,0 +1,364 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-move + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-move: + enabled: true + deployment: + enabled: true + name: + _default: worker-move + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 100m + memory: + _default: 64Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-move:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: dockerhub + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-move" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-move" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:8000" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "10" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://workspaces-service.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_MOVE_WORKER_JOBS + value: + _default: "" + - name: CDE_API_MOVE_JOB_TIMEOUT_MINUTES + value: + _default: "30" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "sarex-vpsql-01.xc.wb.ru" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations_db" + - name: CDE_API_RABBITMQ__HOST + value: + _default: "rabbitmq.rabbitmq.svc.cluster.local" + - name: CDE_API_RABBITMQ__PORT + value: + _default: "5672" + - name: CDE_API_RABBITMQ__VHOST + value: + _default: "cde" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "yc-s3" + secretKey: + _default: "endpoint_url" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "key_id" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "access_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + - name: CDE_API_RABBITMQ__USER + secretName: + _default: "hasher-rabbitmq-secret" + secretKey: + _default: "user" + - name: CDE_API_RABBITMQ__PASSWORD + secretName: + _default: "hasher-rabbitmq-secret" + secretKey: + _default: "password" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/wb/cde-api-worker-s32d-create-upload.yaml b/apps/documentations/wb/cde-api-worker-s32d-create-upload.yaml new file mode 100644 index 0000000..10b4484 --- /dev/null +++ b/apps/documentations/wb/cde-api-worker-s32d-create-upload.yaml @@ -0,0 +1,258 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-create-upload + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-create-upload: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-create-upload + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 200m + memory: + _default: 256Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-create-upload:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: dockerhub + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-create-upload" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-create-upload" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_READERAT_BLOCK_SIZE_MB + value: + _default: "8" + - name: CDE_API_S32D_READERAT_CACHE_BLOCKS + value: + _default: "8" + - name: CDE_API_S32D_WORKER_CREATE_UPLOAD_TIMEOUT_MIN + value: + _default: "240" + - name: CDE_API_S32D_WORKER_CREATE_UPLOAD_MAX_JOBS + value: + _default: "2" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "sarex-vpsql-01.xc.wb.ru" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations_db" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "yc-s3" + secretKey: + _default: "endpoint_url" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "key_id" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "access_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/wb/cde-api-worker-s32d-handle-error.yaml b/apps/documentations/wb/cde-api-worker-s32d-handle-error.yaml new file mode 100644 index 0000000..122005d --- /dev/null +++ b/apps/documentations/wb/cde-api-worker-s32d-handle-error.yaml @@ -0,0 +1,252 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-handle-error + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-handle-error: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-handle-error + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 50m + memory: + _default: 64Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-handle-error:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: dockerhub + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-handle-error" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-handle-error" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "2" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_WORKER_HANDLE_ERROR_TIMEOUT_MIN + value: + _default: "10" + - name: CDE_API_S32D_WORKER_HANDLE_ERROR_MAX_JOBS + value: + _default: "4" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "sarex-vpsql-01.xc.wb.ru" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations_db" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "yc-s3" + secretKey: + _default: "endpoint_url" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "key_id" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "access_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/wb/cde-api-worker-s32d-process-workflows.yaml b/apps/documentations/wb/cde-api-worker-s32d-process-workflows.yaml new file mode 100644 index 0000000..e66f216 --- /dev/null +++ b/apps/documentations/wb/cde-api-worker-s32d-process-workflows.yaml @@ -0,0 +1,321 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-process-workflows + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-process-workflows: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-process-workflows + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 200m + memory: + _default: 256Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-process-workflows:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: dockerhub + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-process-workflows" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-process-workflows" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_WORKER_PROCESS_WORKFLOWS_TIMEOUT_MIN + value: + _default: "480" + - name: CDE_API_S32D_WORKER_PROCESS_WORKFLOWS_MAX_JOBS + value: + _default: "2" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "sarex-vpsql-01.xc.wb.ru" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations_db" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "yc-s3" + secretKey: + _default: "endpoint_url" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "key_id" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "access_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/wb/cde-api-worker-s32d-publish-documents.yaml b/apps/documentations/wb/cde-api-worker-s32d-publish-documents.yaml new file mode 100644 index 0000000..b8e37b6 --- /dev/null +++ b/apps/documentations/wb/cde-api-worker-s32d-publish-documents.yaml @@ -0,0 +1,267 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api-worker-s32d-publish-documents + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + worker-s32d-publish-documents: + enabled: true + deployment: + enabled: true + name: + _default: worker-s32d-publish-documents + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + resources: + requests: + cpu: + _default: 100m + memory: + _default: 64Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api-worker-s32d-publish-documents:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: false + imagePullSecrets: + enabled: + _default: true + name: + _default: dockerhub + envs: + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_APP_NAME + value: + _default: "worker-s32d-publish-documents" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "info" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_OBSERVABILITY_SERVICE_NAME + value: + _default: "worker-s32d-publish-documents" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "3" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "5" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "1" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_S32D_WORKER_PUBLISH_DOCUMENTS_TIMEOUT_MIN + value: + _default: "10" + - name: CDE_API_S32D_WORKER_PUBLISH_DOCUMENTS_MAX_JOBS + value: + _default: "2" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:8000" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://workspaces-service.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "sarex-vpsql-01.xc.wb.ru" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations_db" + secretEnvs: + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "yc-s3" + secretKey: + _default: "endpoint_url" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "key_id" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "access_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/wb/cde-api.yaml b/apps/documentations/wb/cde-api.yaml new file mode 100644 index 0000000..1903ce4 --- /dev/null +++ b/apps/documentations/wb/cde-api.yaml @@ -0,0 +1,452 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cde-api + namespace: documentations +spec: + interval: 10m + chart: + spec: + chart: universal-chart + version: "0.1.7" + sourceRef: + kind: HelmRepository + name: yc-oci-charts + namespace: flux-system + interval: 10m + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + global: + env: _default + services: + cde-api: + enabled: true + deployment: + enabled: true + name: + _default: cde-api + replicaCount: + _default: 1 + revisionHistoryLimit: + _default: 5 + port: + _default: 8000 + resources: + requests: + cpu: + _default: 200m + memory: + _default: 256Mi + image: + name: + _default: cr.yandex/crp3ccidau046kdj8g9q/cde-api:prod_c9bc246 + pullPolicy: + _default: IfNotPresent + service: + enabled: true + name: + _default: cde-api + type: + _default: ClusterIP + port: + _default: 8000 + targetPort: + _default: 8000 + portName: + _default: http + imagePullSecrets: + enabled: + _default: true + name: + _default: dockerhub + envs: + - name: CDE_API_RESOURCES_BASE_URL + value: + _default: "http://iams.iam.svc.cluster.local:8080" + - name: CDE_API_RESOURCES_TIMEOUT + value: + _default: "10s" + - name: CDE_API_APP_NAME + value: + _default: "cde-api" + - name: CDE_API_SENTRY_DSN + value: + _default: "" + - name: CDE_API_SENTRY_ENVIRONMENT + value: + _default: "" + - name: CDE_API_LOG_LEVEL + value: + _default: "debug" + - name: CDE_API_HTTP_PORT + value: + _default: "8000" + - name: CDE_API_HTTP_READ_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_WRITE_TIMEOUT + value: + _default: "0s" + - name: CDE_API_HTTP_IDLE_TIMEOUT + value: + _default: "120s" + - name: CDE_API_HTTP_READ_BUFFER_SIZE + value: + _default: "96" + - name: CDE_API_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_OBSERVABILITY_HOST + value: + _default: "signoz-otel-collector-external.signoz.svc.cluster.local" + - name: CDE_API_OBSERVABILITY_PORT + value: + _default: "4317" + - name: CDE_API_S3_MAX_SINGLE_UPLOAD_SIZE + value: + _default: "5368709120" + - name: CDE_API_S3_MAX_PART_SIZE + value: + _default: "524288000" + - name: CDE_API_S3_UPLOAD_STALL_TIMEOUT + value: + _default: "10m" + - name: CDE_API_PUBLIC_LINK_HOST + value: + _default: "https://document-link-srx.wb.ru" + - name: CDE_API_WORKFLOW_BASE_URL + value: + _default: "http://workflows-api-service.workflow.svc.cluster.local:8000" + - name: CDE_API_WORKFLOW_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKFLOW_RETRY_WAIT_MS + value: + _default: "500" + - name: CDE_API_WORKFLOW_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_V2_URL + value: + _default: "http://backend-service.bim.svc.cluster.local:8000" + - name: CDE_API_BIMAPI_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_BIMAPI_RETRY_WAIT_MS + value: + _default: "1000" + - name: CDE_API_BIMAPI_TIMEOUT_MS + value: + _default: "30000" + - name: CDE_API_BIMAPI_TIMEOUT_V2_MS + value: + _default: "300000" + - name: CDE_API_WORKSPACE_BASE_URL + value: + _default: "http://workspaces-service.workspaces.svc.cluster.local:8000" + - name: CDE_API_WORKSPACE_RETRY_COUNT + value: + _default: "3" + - name: CDE_API_WORKSPACE_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_SYSTEMLOG_BASE_URL + value: + _default: "http://api-service.system-log.svc.cluster.local:8000" + - name: CDE_API_SYSTEMLOG_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_CONTAINER_REGISTRY + value: + _default: "cr.yandex/crp3ccidau046kdj8g9q" + - name: CDE_API_WORKFLOWS_IMAGES_VERSION + value: + _default: "master" + - name: CDE_API_DJANGO_HOST + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_ENVIRONMENT + value: + _default: "production" + - name: CDE_API_CONVERTED_PDF_TO_S3 + value: + _default: "true" + - name: CDE_API_CONVERT_DXF_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_CONVERT_DWG_TO_GEOJSON + value: + _default: "true" + - name: CDE_API_USE_BIMV1_FOR_BIMV2 + value: + _default: "true" + - name: CDE_API_EAV_HOST + value: + _default: "http://eav-service.eav.svc.cluster.local:8000" + - name: CDE_API_EAV_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_DOCUMENTATION_V2_URL + value: + _default: "http://documentations-api.documentations.svc.cluster.local:8080" + - name: CDE_API_INTERNAL_URL + value: + _default: "http://cde-api.documentations:8000" + - name: CDE_API_COPY_MAX_SYNC_WAIT_MS + value: + _default: "300000" + - name: CDE_API_LAST_MASTER_BIM + value: + _default: "36311" + - name: CDE_API_LAST_SLAVE_1_BIM + value: + _default: "94015" + - name: CDE_API_LAST_SLAVE_2_BIM + value: + _default: "135771" + - name: CDE_API_USE_BIM_INSERTER + value: + _default: "true" + - name: CDE_API_USE_LEGACY_BIM_FLOW + value: + _default: "0" + - name: CDE_API_DATABASE_MAX_CONN_LIFETIME + value: + _default: "30m" + - name: CDE_API_DATABASE_MAX_CONN_IDLE_TIME + value: + _default: "10m" + - name: CDE_API_DATABASE_HEALTH_CHECK_PERIOD + value: + _default: "30s" + - name: CDE_API_DATABASE_POOL_SIZE + value: + _default: "10" + - name: CDE_API_DIAGNOSTICS_SLOW_OPERATION_THRESHOLD + value: + _default: "30s" + - name: CDE_API_DATABASE__SSLMODE + value: + _default: "disable" + - name: CDE_API_DATABASE__INSECURE_SKIP_TLS + value: + _default: "false" + - name: CDE_API_DATABASE_OBSERVABILITY_ENABLE + value: + _default: "true" + - name: CDE_API_REDIS__DB + value: + _default: "5" + - name: CDE_API_REDIS__SSL + value: + _default: "false" + - name: CDE_API_REDIS__POOL_SIZE + value: + _default: "10" + - name: CDE_API_REDIS__MIN_IDLE_CONNS + value: + _default: "2" + - name: CDE_API_REDIS__DIAL_TIMEOUT_MS + value: + _default: "5000" + - name: CDE_API_REDIS__READ_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__WRITE_TIMEOUT_MS + value: + _default: "3000" + - name: CDE_API_REDIS__DEFAULT_TTL_MINUTES + value: + _default: "10" + - name: CDE_API_REDIS__PERMISSION_CACHE_ENABLED + value: + _default: "false" + - name: CDE_API_S3_BUCKET_NAME + value: + _default: "documentations-prod" + - name: CDE_API_S3_USE_SSL + value: + _default: "true" + - name: CDE_API_S3_BUCKET_LOOKUP + value: + _default: "auto" + - name: CDE_API_S3_INSECURE_SKIP_TLS + value: + _default: "true" + - name: CDE_API_S3_CHECK_BUCKET + value: + _default: "false" + - name: CDE_API_S3_CONNECT_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S3_TLS_HANDSHAKE_TIMEOUT + value: + _default: "10s" + - name: CDE_API_S32D_MAX_ARCHIVE_SIZE_BYTES + value: + _default: "1099511627776" + - name: CDE_API_S32D_MAX_FILES_COUNT + value: + _default: "500" + - name: CDE_API_ZEEBE_USE_PLAINTEXT + value: + _default: "true" + - name: CDE_API_USERS_BASE_URL + value: + _default: "http://backend.django.svc.cluster.local:8000" + - name: CDE_API_DISK_BUCKET_NAMESPACE + value: + _default: "documentations-prod" + - name: CDE_API_USERS_ORIGINATOR + value: + _default: "docs_prod" + - name: CDE_API_USERS_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_MAILER_BASE_URL + value: + _default: "http://mailer-service.mailer:8000" + - name: CDE_API_MAILER_FROM_EMAIL + value: + _default: "noreply@sarex.io" + - name: CDE_API_MAILER_RETRY_COUNT + value: + _default: "2" + - name: CDE_API_MAILER_TIMEOUT_MS + value: + _default: "10000" + - name: CDE_API_FLOWS_URL + value: + _default: "http://backend-service.flows.svc.cluster.local:8000" + - name: CDE_API_TRANSMITTALS_URL + value: + _default: "http://transmittal-service.transmittal.svc.cluster.local:80" + - name: CDE_API_WORKFLOWS_CONFIG_FILEPATH + value: + _default: "/etc/app/tasks_execution_config.json" + - name: CDE_API_RABBITMQ__MARKS_ROUTING_KEY + value: + _default: "pdf_markings_input" + - name: CDE_API_RABBITMQ__HASHER_ROUTING_KEY + value: + _default: "hash.compute.normal" + - name: CDE_API_RABBITMQ__HASHER_EXCHANGE + value: + _default: "hash.compute" + - name: CDE_API_REDIS__HOST + value: + _default: "redis" + - name: CDE_API_REDIS__PORT + value: + _default: "6379" + - name: CDE_API_DATABASE__HOST + value: + _default: "sarex-vpsql-01.xc.wb.ru" + - name: CDE_API_DATABASE__PORT + value: + _default: "5432" + - name: CDE_API_DATABASE__NAME + value: + _default: "documentations_db" + - name: CDE_API_RABBITMQ__HOST + value: + _default: "rabbitmq.rabbitmq.svc.cluster.local" + - name: CDE_API_RABBITMQ__PORT + value: + _default: "5672" + - name: CDE_API_RABBITMQ__VHOST + value: + _default: "cde" + secretEnvs: + - name: CDE_API_PUBLIC_KEY + secretName: + _default: "public-key" + secretKey: + _default: "key" + - name: CDE_API_DATABASE__USER + secretName: + _default: "postgres-secret" + secretKey: + _default: "username" + - name: CDE_API_DATABASE__PASSWORD + secretName: + _default: "postgres-secret" + secretKey: + _default: "password" + - name: CDE_API_S3_ENDPOINT + secretName: + _default: "yc-s3" + secretKey: + _default: "endpoint_url" + - name: CDE_API_S3_ACCESS_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "key_id" + - name: CDE_API_S3_SECRET_KEY + secretName: + _default: "yc-s3" + secretKey: + _default: "access_key" + - name: CDE_API_ZEEBE_GATEWAY_ADDRESS + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "gateway_address" + - name: CDE_API_ZEEBE_CLIENT_ID + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_id" + - name: CDE_API_ZEEBE_CLIENT_SECRET + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "client_secret" + - name: CDE_API_ZEEBE_AUTH_SERVER_URL + secretName: + _default: "cde-api-zeebe-secret" + secretKey: + _default: "auth_server_url" + - name: CDE_API_USERS_AUTH_TOKEN + secretName: + _default: "django-auth" + secretKey: + _default: "key" + - name: CDE_API_RABBITMQ__USER + secretName: + _default: "hasher-rabbitmq-secret" + secretKey: + _default: "user" + - name: CDE_API_RABBITMQ__PASSWORD + secretName: + _default: "hasher-rabbitmq-secret" + secretKey: + _default: "password" + volumes: + _default: + - name: tasks-execution-config + mountPath: + _default: /etc/app/tasks_execution_config.json + subPath: + _default: tasks_execution_config.json + readOnly: + _default: true + configMap: + name: + _default: tasks-execution-config-documentation-v2 + items: + - key: tasks-execution-config-documentation-v2.json + path: + _default: tasks_execution_config.json + defaultMode: + _default: "0644" diff --git a/apps/documentations/wb/kustomization.yaml b/apps/documentations/wb/kustomization.yaml index e8899c2..9f9c2ab 100644 --- a/apps/documentations/wb/kustomization.yaml +++ b/apps/documentations/wb/kustomization.yaml @@ -12,3 +12,11 @@ resources: - frontend-static.yaml - redis.yaml - stamp-verification.yaml + - tasks-execution-config.yaml + - cde-api.yaml + - cde-api-worker-s32d-create-upload.yaml + - cde-api-worker-s32d-process-workflows.yaml + - cde-api-worker-s32d-publish-documents.yaml + - cde-api-worker-s32d-handle-error.yaml + - cde-api-worker-copy.yaml + - cde-api-worker-move.yaml diff --git a/apps/documentations/wb/tasks-execution-config.yaml b/apps/documentations/wb/tasks-execution-config.yaml new file mode 100644 index 0000000..f4fa140 --- /dev/null +++ b/apps/documentations/wb/tasks-execution-config.yaml @@ -0,0 +1,180 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: tasks-execution-config-documentation-v2 + namespace: documentations +data: + tasks-execution-config-documentation-v2.json: | + { + "bim_api_metadata_inserter": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_api_metadata_inserter_v2": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_api_metadata_inserter_v4": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_differ": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "bim_updater": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "convert_to_potree": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "docx_to_pdf": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "dwg_to_geojson": { + "executor": "k8s", + "resources": { + "cpu_limits": "4", + "cpu_requests": "100m", + "memory_limits": "40Gi", + "memory_requests": "64Mi" + } + }, + "e57_to_las": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "ifc_converter_job": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "las_merge": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "mesh_optimizer": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "mesh_optimizer_v2": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "parsing_template": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "processing_converter_to_tiles": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "processing_create_colored_surface_from_geotiff": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "rendering_template": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "split_pdf_document": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "split_pdf_document_legacy": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "update_orthomosaic_data": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "web_hook_caller": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "xml_to_glb": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "document_converter": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + }, + "sparkjs_converter_wrapper": { + "executor": "k8s", + "resources": { + "cpu_requests": "100m", + "memory_requests": "64Mi" + } + } + } diff --git a/docs/apps/documentations.md b/docs/apps/documentations.md index a4dd446..1b84ead 100644 --- a/docs/apps/documentations.md +++ b/docs/apps/documentations.md @@ -15,11 +15,19 @@ flowchart LR API[deployment: api]:::comp Filestream[deployment: filestream
upload/download]:::comp PDM[deployment: pdm
product data mgmt]:::comp + CDEAPI[deployment: cde-api
новый CDE API]:::comp + Workers[deployments: cde-api-worker-*
s32d x4, copy, move]:::comp Frontend --> API API --> Filestream API --> PDM + CDEAPI --> API + Workers --> API end + Zeebe[Camunda / Zeebe]:::infra + CDEPG[(PostgreSQL, общий)]:::data + Valkey[(Valkey)]:::data + DocLink[document-link]:::peer CDE[cde]:::peer Transmittal[transmittal]:::peer @@ -32,6 +40,11 @@ flowchart LR PDM --> PG Filestream -->|files| S3 --> MinIO API -. JWT .-> KC + CDEAPI --> CDEPG + CDEAPI --> Valkey + CDEAPI -->|files| S3 + Workers --> CDEPG + Workers -->|jobs| Zeebe classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff classDef peer fill:#fce7f3,stroke:#9d174d,color:#000 @@ -40,3 +53,12 @@ flowchart LR classDef idp fill:#f59e0b,stroke:#92400e,color:#fff style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px ``` + +## cde-api + +`cde-api` — новый CDE API (Go) и 6 воркеров (`s32d-create-upload`, `s32d-process-workflows`, `s32d-publish-documents`, `s32d-handle-error`, `copy`, `move`), развёрнутых в ns `documentations`. Не путать с легаси-сервисом `cde` (`cde-svc.cde`, см. `cde.md`). + +- Манифесты: `apps/documentations/base/cde-api*.yaml`, оверлеи — в каталогах контуров (`sarex-contour`, `yc-k8s-test` наследуют `base`; `d8-ugmk-prod`, `uralkal`, `vad` патчат `cde-api`; `ugok`, `brusnika-*`, `wb` — полные копии). +- Postgres, Valkey (`redis`) и S3 общие с documentations. Секреты — Vault Agent (в образы cde-api добавлен busybox для shell-обёртки запуска); путь `secrets/data/apps/cde-api/zeebe` нужно создать. В k8s-контурах (`ugok`, `brusnika-*`, `wb`) вместо Vault используются Secret'ы. +- CronJob'ы (`workspace-recovery`, `resource-id-backfill`, `sizer`) пока не перенесены. +- Подробности: `apps/documentations/cde-api.CONFIGURATION.md`, `cde-api.ENDPOINTS.md`, `cde-api.env.example`, `cde-api.openapi.yaml`.