Nest Engineering Docs
Handler

Configuration

Runtime configuration and environment variables for Handler

Settings file

  • services/handler/config/settings.py
  • Local overrides can be placed in services/handler/.env.

Environment variables

VariableRequiredDefaultPurpose
PROJECT_NAMENoNest Data Pipeline - Task HandlerService display name
COMPONENT_SLUGNohandlerComponent slug for secrets
API_V1_STRNo/api/v1API prefix
DEBUGNofalseEnables debug mode
SENTRY_ENVIRONMENTNoproductionSentry environment tag
TASK_ESCALATION_SECONDSNo3600Retry escalation threshold
ALLOWED_ORIGINSNo["*"]CORS allowlist
NEST_API_KEYNoDEFAULT_SKReserved API key (not used for ingress)
GCP_PROJECT_IDNoresolved via metadataGCP project id
SPANNER_INSTANCE_IDYesnoneSpanner instance id
SPANNER_DATABASE_IDYesnoneSpanner database id
PIPELINE_MAX_RUNTIME_SECONDSNo1600Pipeline execution limit
CLOUD_TASKS_LOCATIONNous-central1Cloud Tasks region
BUBBLE_INVOICES_QUEUENonest-bubble-invoicesQueue for Bubble invoice forwarding
BUBBLE_INVOICES_ENDPOINTYesnoneBubble API endpoint for invoices
CLOUD_TASKS_SERVICE_ACCOUNTNononeOIDC token service account
PARTNERCREDS_SERVICE_BASE_URLNoresolved via service discoveryPartnerCreds base URL

Credentials

Handler uses Application Default Credentials (ADC) for:

  • Cloud Spanner access
  • Secret Manager access
  • Cloud Tasks API (invoice forwarding)

For local development, set GOOGLE_APPLICATION_CREDENTIALS to a service account JSON with Spanner + Secret Manager + Cloud Tasks permissions, or run gcloud auth application-default login.

Behavior notes

  • When DEBUG=true, pipeline status updates are disabled to avoid polluting production metadata.
  • PARTNERCREDS_SERVICE_BASE_URL is resolved automatically if not provided, using Cloud Run service discovery.
  • PIPELINE_MAX_RUNTIME_SECONDS enforces an async timeout at the request layer.

Secrets (Secret Manager)

SecretRequiredPurpose
HANDLER_SENTRY_DSNNoError and trace reporting
BUBBLE_API_TOKENYesAuthorization for Bubble invoice forwarding
{ORG}_PARTNER_IDYes (ezyVet)Partner id per org
{ORG}_CLIENT_IDYes (ezyVet)Client id per org
{ORG}_CLIENT_SECRETYes (ezyVet)Client secret per org
{ORG}_SCOPEYes (ezyVet)OAuth scope per org
EZYVET_PROXY_HOSTNoProxy host for ezyVet
EZYVET_PROXY_USERNoProxy username for ezyVet
EZYVET_PROXY_PASSWORDNoProxy password for ezyVet

Last updated on