Skip to content
This repository was archived by the owner on Jun 9, 2026. It is now read-only.

ENG-6856: Add test seed endpoint for E2E campaign data seeding - #1336

Draft
dealvz wants to merge 3 commits into
developfrom
e2e-test-seed-endpoint
Draft

ENG-6856: Add test seed endpoint for E2E campaign data seeding#1336
dealvz wants to merge 3 commits into
developfrom
e2e-test-seed-endpoint

Conversation

@dealvz

@dealvz dealvz commented Mar 20, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds a gated POST /v1/test/seed/campaign endpoint that seeds campaign data (Pro status, free texts offer, TCR compliance) for E2E testing.

Changes

  • src/testSeed/ — New TestSeedModule with controller, service, Zod schema, and unit tests
    • POST /v1/test/seed/campaign — Accepts campaignId, optional isPro, hasFreeTextsOffer, tcrComplianceStatus
    • Ownership check: verifies the authenticated user owns the campaign (prevents IDOR)
    • Unit tests cover ownership denial and happy path
  • src/app.module.ts — Conditionally registers TestSeedModule when TCR_COMPLIANCE_BACKDOOR_ENABLED=true
  • deploy/index.ts — Sets TCR_COMPLIANCE_BACKDOOR_ENABLED to 'false' for prod, 'true' for all other environments

Security

  • Endpoint is never registered in production (TCR_COMPLIANCE_BACKDOOR_ENABLED is 'false' in prod)
  • Requires authentication (global JWT guard)
  • Ownership verified: users can only seed their own campaigns

Related

  • Companion PR in gp-webapp (not created yet): e2e-peerly-outreach branch (Playwright E2E tests that consume this endpoint)
  • ClickUp: ENG-6856

Note

Medium Risk
Introduces a test-only data mutation endpoint that can change campaign and TCR compliance state; while gated behind TCR_COMPLIANCE_BACKDOOR_ENABLED and ownership checks, misconfiguration could expose it in non-test environments.

Overview
Adds a test-only seeding endpoint (POST /test/seed/campaign) to update an authenticated user’s campaign (isPro, hasFreeTextsOffer) and optionally upsert tcrCompliance.status, with Zod request validation and unit coverage for ownership enforcement.

Wires the new TestSeedModule into AppModule only when TCR_COMPLIANCE_BACKDOOR_ENABLED=true, and sets that env var via Pulumi to disabled in prod and enabled in non-prod deployments.

Written by Cursor Bugbot for commit cd0c65a. Configure here.

@tomer-tgp

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

Status Category Percentage Covered / Total
🔴 Lines 40.6% 3265 / 8041
🔴 Statements 40.27% 3323 / 8250
🔴 Functions 45.6% 710 / 1557
🔴 Branches 31.6% 1553 / 4914
File Coverage
File Stmts Branches Functions Lines Uncovered Lines
Changed Files
src/app.module.ts 100% 50% 100% 100%
src/testSeed/testSeed.controller.ts 0% 100% 0% 0% 22-27
src/testSeed/testSeed.module.ts 100% 100% 100% 100%
src/testSeed/testSeed.service.ts 100% 60% 100% 100%
src/testSeed/schemas/seedCampaign.schema.ts 100% 100% 100% 100%
Generated in workflow #2203 for commit cd0c65a by the Vitest Coverage Report Action

@github-actions

Copy link
Copy Markdown
Contributor

📊 Overall Test Coverage

39.52% (average of lines, statements, functions, and branches)

@github-actions

Copy link
Copy Markdown
Contributor

Infrastructure Diff

This PR makes infrastructure changes in at least one environment.

dev

1 create, 1 replace, 70 same, 1 update

Show diff
Previewing update (gp-api-dev):
  pulumi:pulumi:Stack: (same)
    [urn=urn:pulumi:gp-api-dev::gp-api::pulumi:pulumi:Stack::gp-api-gp-api-dev]
    + grafana:alerting/ruleGroup:RuleGroup: (create)
        [urn=urn:pulumi:gp-api-dev::gp-api::grafana:alerting/ruleGroup:RuleGroup::test/seed-rules]
        [provider=urn:pulumi:gp-api-dev::gp-api::pulumi:providers:grafana::default_2_20_0_github_/api.github.com/pulumiverse::06e46829-23bd-4b1a-8cb3-d8054334a1e6]
        disableProvenance: false
        folderUid        : "dffl7ndwz67swb"
        intervalSeconds  : 60
        name             : "test/seed routes"
        rules            : [
            [0]: {
                annotations : {
                    description: "`POST /v1/test/seed/campaign` returned unexpected error responses in the last hour (status ≥ 400, excluding 401/403/404/409/498).\n\nClick *View in Grafana* to find the failing requests, then examine their logs and stack traces to understand why errors are occurring and ship fixes."
                    summary    : "[test/seed] POST /v1/test/seed/campaign - Errors detected"
                }
                condition   : "C"
                datas       : [
                    [0]: {
                        datasourceUid    : "grafanacloud-logs"
                        model            : (json) {
                            expr : "sum(count_over_time({service_name=\"gp-api\", deployment_environment_name=\"dev\"} |= \"Request completed\" | json | request_endpoint = \"POST /v1/test/seed/..."
                            refId: "A"
                        }

                        queryType        : "range"
                        refId            : "A"
                        relativeTimeRange: {
                            from      : 600
                            to        : 0
                        }
                    }
                    [1]: {
                        datasourceUid    : "-100"
                        model            : (json) {
                            datasource: {
                                type: "__expr__"
                                uid : "-100"
                            }
                            expression: "A"
                            reducer   : "last"
                            refId     : "B"
                            settings  : {
                                mode: ""
                            }
                            type      : "reduce"
                        }

                        queryType        : ""
                        refId            : "B"
                        relativeTimeRange: {
                            from      : 0
                            to        : 0
                        }
                    }
                    [2]: {
                        datasourceUid    : "-100"
                        model            : (json) {
                            conditions: [
                                [0]: {
                                    evaluator: {
                                        params: [
                                            [0]: 0
                                        ]
                                        type  : "gt"
                                    }
                                    operator : {
                                        type: "and"
                                    }
                                    query    : {
                                        params: [
                                            [0]: "B"
                                        ]
                                    }
                                    reducer  : {
                                        params: []
                                        type  : "last"
                                    }
                                    type     : "query"
                                }
                            ]
                            datasource: {
                                type: "__expr__"
                                uid : "-100"
                            }
                            expression: "B"
                            refId     : "C"
                            type      : "threshold"
                        }

                        queryType        : ""
                        refId            : "C"
                        relativeTimeRange: {
                            from      : 0
                            to        : 0
                        }
                    }
                ]
                execErrState: "Alerting"
                for         : "1m"
                isPaused    : true
                labels      : {
                    alert_slug : "POST--v1-test-seed-campaign-error-count"
                    environment: "dev"
                }
                name        : "[test/seed] POST /v1/test/seed/campaign - Errors detected"
                noDataState : "OK"
            }
            [1]: {
                annotations : {
                    description: "`POST /v1/test/seed/campaign` p95 latency has exceeded 3000ms over the last hour.\n\nClick *View in Grafana* to find the slow requests, then examine their traces to identify the bottleneck (slow DB queries, external API calls, etc.). I..."
                    summary    : "[test/seed] POST /v1/test/seed/campaign - High p95 latency"
                }
                condition   : "C"
                datas       : [
                    [0]: {
                        datasourceUid    : "grafanacloud-logs"
                        model            : (json) {
                            expr : "quantile_over_time(0.95, {service_name=\"gp-api\", deployment_environment_name=\"dev\"} |= \"Request completed\" | json | request_endpoint = \"POST /v1/test/..."
                            refId: "A"
                        }

                        queryType        : "range"
                        refId            : "A"
                        relativeTimeRange: {
                            from      : 600
                            to        : 0
                        }
                    }
                    [1]: {
                        datasourceUid    : "-100"
                        model            : (json) {
                            datasource: {
                                type: "__expr__"
                                uid : "-100"
                            }
                            expression: "A"
                            reducer   : "last"
                            refId     : "B"
                            settings  : {
                                mode: ""
                            }
                            type      : "reduce"
                        }

                        queryType        : ""
                        refId            : "B"
                        relativeTimeRange: {
                            from      : 0
                            to        : 0
                        }
                    }
                    [2]: {
                        datasourceUid    : "-100"
                        model            : (json) {
                            conditions: [
                                [0]: {
                                    evaluator: {
                                        params: [
                                            [0]: 3000
                                        ]
                                        type  : "gt"
                                    }
                                    operator : {
                                        type: "and"
                                    }
                                    query    : {
                                        params: [
                                            [0]: "B"
                                        ]
                                    }
                                    reducer  : {
                                        params: []
                                        type  : "last"
                                    }
                                    type     : "query"
                                }
                            ]
                            datasource: {
                                type: "__expr__"
                                uid : "-100"
                            }
                            expression: "B"
                            refId     : "C"
                            type      : "threshold"
                        }

                        queryType        : ""
                        refId            : "C"
                        relativeTimeRange: {
                            from      : 0
                            to        : 0
                        }
                    }
                ]
                execErrState: "Alerting"
                for         : "1m"
                isPaused    : true
                labels      : {
                    alert_slug : "POST--v1-test-seed-campaign-p95-latency"
                    environment: "dev"
                }
                name        : "[test/seed] POST /v1/test/seed/campaign - High p95 latency"
                noDataState : "OK"
            }
        ]
    +-aws:ecs/taskDefinition:TaskDefinition: (replace)
        [id=gp-develop-fargateCluster-gp-api-develop]
        [urn=urn:pulumi:gp-api-dev::gp-api::aws:ecs/taskDefinition:TaskDefinition::taskDefinition]
        [provider=urn:pulumi:gp-api-dev::gp-api::pulumi:providers:aws::default_6_67_0::c607b162-eb6f-4039-a111-2e624ce0d017]
      ~ containerDefinitions: (json) [
          ~ [0]: {
                    cpu             : 512
                  ~ environment     : [
                        [0]: {
                                name : "AI_MODELS"
                                value: "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8,Qwen/Qwen3-235B-A22B-fp8-tput"
                            }
                        [1]: {
                                name : "ASSET_DOMAIN"
                                value: "assets-dev.goodparty.org"
                            }
                        [2]: {
                                name : "AWS_REGION"
                                value: "us-west-2"
                            }
                        [3]: {
                                name : "CORS_ORIGIN"
                                value: "dev.goodparty.org"
                            }
                        [4]: {
                                name : "DB_HOST"
                                value: "gp-api-db.cluster-cmb1uukjsfbe.us-west-2.rds.amazonaws.com"
                            }
                        [5]: {
                                name : "DB_NAME"
                                value: "gpdb"
                            }
                        [6]: {
                                name : "DB_USER"
                                value: "gpuser"
                            }
                        [7]: {
                                name : "HOST"
                                value: "0.0.0.0"
                            }
                        [8]: {
                                name : "LLAMA_AI_ASSISTANT"
                                value: "asst_GP_AI_1.0"
                            }
                        [9]: {
                                name : "LOG_LEVEL"
                                value: "debug"
                            }
                        [10]: {
                                name : "OTEL_SERVICE_ENVIRONMENT"
                                value: "dev"
                            }
                        [11]: {
                                name : "PORT"
                                value: "80"
                            }
                      ~ [12]: {
                                name : "SECRET_NAMES"
                              ~ value: "AUTH_SECRET,CONTENTFUL_SPACE_ID,CONTENTFUL_ACCESS_TOKEN,MAILGUN_API_KEY,ASHBY_KEY,FULLSTORY_API_KEY,TOGETHER_AI_KEY,OPEN_AI_KEY,GOOGLE_CLIENT_ID,GOOGLE_API_KEY,STRIPE_SECRET_KEY,STRIPE_WEBSOCKET_SECRET,BALLOT_READY_KEY,L2_DATA_KEY,SLACK_APP_ID,SLACK_BOT_DEV_CHANNEL_ID,SLACK_BOT_DEV_CHANNEL_TOKEN,SLACK_BOT_PATH_TO_VICTORY_CHANNEL_ID,SLACK_BOT_PATH_TO_VICTORY_CHANNEL_TOKEN,SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_ID,SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_TOKEN,SLACK_USER_FEEDBACK_CHANNEL_ID,SLACK_USER_FEEDBACK_CHANNEL_TOKEN,SLACK_BOT_AI_CHANNEL_ID,SLACK_BOT_AI_CHANNEL_TOKEN,SLACK_BOT_FEEDBACK_CHANNEL_ID,SLACK_BOT_FEEDBACK_CHANNEL_TOKEN,SLACK_BOT_POLITICS_CHANNEL_ID,SLACK_BOT_POLITICS_CHANNEL_TOKEN,WINNERS_ELECTION_YEAR,RUMBLE_APP_ACCOUNT_ID,RUMBLE_APP_API_KEY,NO_COLOR,SEGMENT_WRITE_KEY,VERCEL_TOKEN,VERCEL_PROJECT_ID,VERCEL_TEAM_ID,ELECTION_API_URL,PEERLY_MD5_EMAIL,PEERLY_MD5_PASSWORD,PEERLY_ACCOUNT_NUMBER,PEERLY_API_BASE_URL,PEERLY_TEST_ENVIRONMENT,VOTER_FILE_LATEST_EVEN_YEAR,VOTER_FILE_LATEST_ODD_YEAR,VOTER_FILE_YEARS_LENGTH,PEERLY_SCHEDULE_ID,PEOPLE_API_URL,PEOPLE_API_S2S_SECRET,FORWARDEMAIL_API_TOKEN,FORWARDEMAIL_BASE_URL,SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_ID,SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_TOKEN,NEW_RELIC_APP_NAME,NEW_RELIC_LICENSE_KEY,SLACK_BOT_TEVYN_API_CHANNEL_ID,SLACK_BOT_TEVYN_API_CHANNEL_TOKEN,AMPLITUDE_PROJECT_API_KEY,SLACK_APP_BOT_TOKEN,BRAINTRUST_API_KEY,DB_PASSWORD,VOTER_DB_PASSWORD,CLERK_PUBLISHABLE_KEY,CLERK_SECRET_KEY,GP_WEBAPP_MACHINE_SECRET,SERVE_ANALYZE_S3_BUCKET,OTEL_EXPORTER_OTLP_HEADERS" => "AUTH_SECRET,CONTENTFUL_SPACE_ID,CONTENTFUL_ACCESS_TOKEN,MAILGUN_API_KEY,ASHBY_KEY,FULLSTORY_API_KEY,TOGETHER_AI_KEY,OPEN_AI_KEY,GOOGLE_CLIENT_ID,GOOGLE_API_KEY,STRIPE_SECRET_KEY,STRIPE_WEBSOCKET_SECRET,BALLOT_READY_KEY,L2_DATA_KEY,SLACK_APP_ID,SLACK_BOT_DEV_CHANNEL_ID,SLACK_BOT_DEV_CHANNEL_TOKEN,SLACK_BOT_PATH_TO_VICTORY_CHANNEL_ID,SLACK_BOT_PATH_TO_VICTORY_CHANNEL_TOKEN,SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_ID,SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_TOKEN,SLACK_USER_FEEDBACK_CHANNEL_ID,SLACK_USER_FEEDBACK_CHANNEL_TOKEN,SLACK_BOT_AI_CHANNEL_ID,SLACK_BOT_AI_CHANNEL_TOKEN,SLACK_BOT_FEEDBACK_CHANNEL_ID,SLACK_BOT_FEEDBACK_CHANNEL_TOKEN,SLACK_BOT_POLITICS_CHANNEL_ID,SLACK_BOT_POLITICS_CHANNEL_TOKEN,WINNERS_ELECTION_YEAR,RUMBLE_APP_ACCOUNT_ID,RUMBLE_APP_API_KEY,NO_COLOR,SEGMENT_WRITE_KEY,VERCEL_TOKEN,VERCEL_PROJECT_ID,VERCEL_TEAM_ID,ELECTION_API_URL,PEERLY_MD5_EMAIL,PEERLY_MD5_PASSWORD,PEERLY_ACCOUNT_NUMBER,PEERLY_API_BASE_URL,PEERLY_TEST_ENVIRONMENT,VOTER_FILE_LATEST_EVEN_YEAR,VOTER_FILE_LATEST_ODD_YEAR,VOTER_FILE_YEARS_LENGTH,PEERLY_SCHEDULE_ID,PEOPLE_API_URL,PEOPLE_API_S2S_SECRET,FORWARDEMAIL_API_TOKEN,FORWARDEMAIL_BASE_URL,SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_ID,SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_TOKEN,NEW_RELIC_APP_NAME,NEW_RELIC_LICENSE_KEY,SLACK_BOT_TEVYN_API_CHANNEL_ID,SLACK_BOT_TEVYN_API_CHANNEL_TOKEN,AMPLITUDE_PROJECT_API_KEY,SLACK_APP_BOT_TOKEN,BRAINTRUST_API_KEY,DB_PASSWORD,VOTER_DB_PASSWORD,CLERK_PUBLISHABLE_KEY,CLERK_SECRET_KEY,GP_WEBAPP_MACHINE_SECRET,SERVE_ANALYZE_S3_BUCKET,OTEL_EXPORTER_OTLP_HEADERS,CLERK_WEBHOOK_SECRET"
                            }
                        [13]: {
                                name : "SERVE_ANALYSIS_BUCKET_NAME"
                                value: "serve-analyze-data-dev"
                            }
                        [14]: {
                                name : "SQS_QUEUE"
                                value: "develop-Queue.fifo"
                            }
                        [15]: {
                                name : "SQS_QUEUE_BASE_URL"
                                value: "https://sqs.us-west-2.amazonaws.com/333022194791"
                            }
                      ~ [16]: {
                              ~ name : "TEVYN_POLL_CSVS_BUCKET" => "TCR_COMPLIANCE_BACKDOOR_ENABLED"
                              ~ value: "tevyn-poll-csvs-develop" => "true"
                            }
                      ~ [17]: {
                              ~ name : "VOTER_DB_HOST" => "TEVYN_POLL_CSVS_BUCKET"
                              ~ value: "gp-voter-db-develop.cluster-cmb1uukjsfbe.us-west-2.rds.amazonaws.com" => "tevyn-poll-csvs-develop"
                            }
                      ~ [18]: {
                              ~ name : "VOTER_DB_NAME" => "VOTER_DB_HOST"
                              ~ value: "voters" => "gp-voter-db-develop.cluster-cmb1uukjsfbe.us-west-2.rds.amazonaws.com"
                            }
                      ~ [19]: {
                              ~ name : "VOTER_DB_USER" => "VOTER_DB_NAME"
                              ~ value: "postgres" => "voters"
                            }
                      ~ [20]: {
                              ~ name : "WEBAPP_ROOT_URL" => "VOTER_DB_USER"
                              ~ value: "https://dev.goodparty.org" => "postgres"
                            }
                      ~ [21]: {
                              ~ name : "ZIP_TO_AREA_CODE_BUCKET" => "WEBAPP_ROOT_URL"
                              ~ value: "zip-to-area-code-mappings-develop" => "https://dev.goodparty.org"
                            }
                      + [22]: {
                              + name : "ZIP_TO_AREA_CODE_BUCKET"
                              + value: "zip-to-area-code-mappings-develop"
                            }
                    ]
                    essential       : true
                    image           : "333022194791.dkr.ecr.us-west-2.amazonaws.com/gp-api:f3b15aeaa89f25031736d498974bf22d4585e138"
                    linuxParameters : {
                        initProcessEnabled: true
                    }
                    logConfiguration: {
                        logDriver: "awslogs"
                        options  : {
                            awslogs-group        : "/sst/cluster/gp-develop-fargateCluster/gp-api-develop/gp-api-develop"
                            awslogs-region       : "us-west-2"
                            awslogs-stream-prefix: "/service"
                        }
                    }
                    memory          : 2048
                  - mountPoints     : []
                    name            : "gp-api-develop"
                    portMappings    : [
                        [0]: {
                            containerPort: 80
                            hostPort     : 80
                            protocol     : "tcp"
                        }
                    ]
                    pseudoTerminal  : true
                  ~ secrets         : [
                        [0]: {
                                name     : "AMPLITUDE_PROJECT_API_KEY"
                                valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:AMPLITUDE_PROJECT_API_KEY::"
                            }
                        [1]: {
                                name     : "ASHBY_KEY"
                                valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:ASHBY_KEY::"
                            }
                        [2]: {
                                name     : "AUTH_SECRET"
                                valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:AUTH_SECRET::"
                            }
                        [3]: {
                                name     : "BALLOT_READY_KEY"
                                valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:BALLOT_READY_KEY::"
                            }
                        [4]: {
                                name     : "BRAINTRUST_API_KEY"
                                valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:BRAINTRUST_API_KEY::"
                            }
                        [5]: {
                                name     : "CLERK_PUBLISHABLE_KEY"
                                valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:CLERK_PUBLISHABLE_KEY::"
                            }
                        [6]: {
                                name     : "CLERK_SECRET_KEY"
                                valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:CLERK_SECRET_KEY::"
                            }
                      ~ [7]: {
                              ~ name     : "CONTENTFUL_ACCESS_TOKEN" => "CLERK_WEBHOOK_SECRET"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:CONTENTFUL_ACCESS_TOKEN::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:CLERK_WEBHOOK_SECRET::"
                            }
                      ~ [8]: {
                              ~ name     : "CONTENTFUL_SPACE_ID" => "CONTENTFUL_ACCESS_TOKEN"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:CONTENTFUL_SPACE_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:CONTENTFUL_ACCESS_TOKEN::"
                            }
                      ~ [9]: {
                              ~ name     : "DB_PASSWORD" => "CONTENTFUL_SPACE_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:DB_PASSWORD::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:CONTENTFUL_SPACE_ID::"
                            }
                      ~ [10]: {
                              ~ name     : "ELECTION_API_URL" => "DB_PASSWORD"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:ELECTION_API_URL::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:DB_PASSWORD::"
                            }
                      ~ [11]: {
                              ~ name     : "FORWARDEMAIL_API_TOKEN" => "ELECTION_API_URL"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:FORWARDEMAIL_API_TOKEN::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:ELECTION_API_URL::"
                            }
                      ~ [12]: {
                              ~ name     : "FORWARDEMAIL_BASE_URL" => "FORWARDEMAIL_API_TOKEN"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:FORWARDEMAIL_BASE_URL::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:FORWARDEMAIL_API_TOKEN::"
                            }
                      ~ [13]: {
                              ~ name     : "FULLSTORY_API_KEY" => "FORWARDEMAIL_BASE_URL"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:FULLSTORY_API_KEY::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:FORWARDEMAIL_BASE_URL::"
                            }
                      ~ [14]: {
                              ~ name     : "GOOGLE_API_KEY" => "FULLSTORY_API_KEY"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:GOOGLE_API_KEY::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:FULLSTORY_API_KEY::"
                            }
                      ~ [15]: {
                              ~ name     : "GOOGLE_CLIENT_ID" => "GOOGLE_API_KEY"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:GOOGLE_CLIENT_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:GOOGLE_API_KEY::"
                            }
                      ~ [16]: {
                              ~ name     : "GP_WEBAPP_MACHINE_SECRET" => "GOOGLE_CLIENT_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:GP_WEBAPP_MACHINE_SECRET::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:GOOGLE_CLIENT_ID::"
                            }
                      ~ [17]: {
                              ~ name     : "L2_DATA_KEY" => "GP_WEBAPP_MACHINE_SECRET"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:L2_DATA_KEY::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:GP_WEBAPP_MACHINE_SECRET::"
                            }
                      ~ [18]: {
                              ~ name     : "MAILGUN_API_KEY" => "L2_DATA_KEY"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:MAILGUN_API_KEY::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:L2_DATA_KEY::"
                            }
                      ~ [19]: {
                              ~ name     : "NEW_RELIC_APP_NAME" => "MAILGUN_API_KEY"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:NEW_RELIC_APP_NAME::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:MAILGUN_API_KEY::"
                            }
                      ~ [20]: {
                              ~ name     : "NEW_RELIC_LICENSE_KEY" => "NEW_RELIC_APP_NAME"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:NEW_RELIC_LICENSE_KEY::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:NEW_RELIC_APP_NAME::"
                            }
                      ~ [21]: {
                              ~ name     : "NO_COLOR" => "NEW_RELIC_LICENSE_KEY"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:NO_COLOR::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:NEW_RELIC_LICENSE_KEY::"
                            }
                      ~ [22]: {
                              ~ name     : "OPEN_AI_KEY" => "NO_COLOR"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:OPEN_AI_KEY::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:NO_COLOR::"
                            }
                      ~ [23]: {
                              ~ name     : "OTEL_EXPORTER_OTLP_HEADERS" => "OPEN_AI_KEY"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:OTEL_EXPORTER_OTLP_HEADERS::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:OPEN_AI_KEY::"
                            }
                      ~ [24]: {
                              ~ name     : "PEERLY_ACCOUNT_NUMBER" => "OTEL_EXPORTER_OTLP_HEADERS"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEERLY_ACCOUNT_NUMBER::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:OTEL_EXPORTER_OTLP_HEADERS::"
                            }
                      ~ [25]: {
                              ~ name     : "PEERLY_API_BASE_URL" => "PEERLY_ACCOUNT_NUMBER"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEERLY_API_BASE_URL::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEERLY_ACCOUNT_NUMBER::"
                            }
                      ~ [26]: {
                              ~ name     : "PEERLY_MD5_EMAIL" => "PEERLY_API_BASE_URL"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEERLY_MD5_EMAIL::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEERLY_API_BASE_URL::"
                            }
                      ~ [27]: {
                              ~ name     : "PEERLY_MD5_PASSWORD" => "PEERLY_MD5_EMAIL"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEERLY_MD5_PASSWORD::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEERLY_MD5_EMAIL::"
                            }
                      ~ [28]: {
                              ~ name     : "PEERLY_SCHEDULE_ID" => "PEERLY_MD5_PASSWORD"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEERLY_SCHEDULE_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEERLY_MD5_PASSWORD::"
                            }
                      ~ [29]: {
                              ~ name     : "PEERLY_TEST_ENVIRONMENT" => "PEERLY_SCHEDULE_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEERLY_TEST_ENVIRONMENT::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEERLY_SCHEDULE_ID::"
                            }
                      ~ [30]: {
                              ~ name     : "PEOPLE_API_S2S_SECRET" => "PEERLY_TEST_ENVIRONMENT"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEOPLE_API_S2S_SECRET::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEERLY_TEST_ENVIRONMENT::"
                            }
                      ~ [31]: {
                              ~ name     : "PEOPLE_API_URL" => "PEOPLE_API_S2S_SECRET"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEOPLE_API_URL::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEOPLE_API_S2S_SECRET::"
                            }
                      ~ [32]: {
                              ~ name     : "RUMBLE_APP_ACCOUNT_ID" => "PEOPLE_API_URL"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:RUMBLE_APP_ACCOUNT_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:PEOPLE_API_URL::"
                            }
                      ~ [33]: {
                              ~ name     : "RUMBLE_APP_API_KEY" => "RUMBLE_APP_ACCOUNT_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:RUMBLE_APP_API_KEY::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:RUMBLE_APP_ACCOUNT_ID::"
                            }
                      ~ [34]: {
                              ~ name     : "SEGMENT_WRITE_KEY" => "RUMBLE_APP_API_KEY"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SEGMENT_WRITE_KEY::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:RUMBLE_APP_API_KEY::"
                            }
                      ~ [35]: {
                              ~ name     : "SERVE_ANALYZE_S3_BUCKET" => "SEGMENT_WRITE_KEY"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SERVE_ANALYZE_S3_BUCKET::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SEGMENT_WRITE_KEY::"
                            }
                      ~ [36]: {
                              ~ name     : "SLACK_APP_BOT_TOKEN" => "SERVE_ANALYZE_S3_BUCKET"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_APP_BOT_TOKEN::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SERVE_ANALYZE_S3_BUCKET::"
                            }
                      ~ [37]: {
                              ~ name     : "SLACK_APP_ID" => "SLACK_APP_BOT_TOKEN"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_APP_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_APP_BOT_TOKEN::"
                            }
                      ~ [38]: {
                              ~ name     : "SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_ID" => "SLACK_APP_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_APP_ID::"
                            }
                      ~ [39]: {
                              ~ name     : "SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_TOKEN" => "SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_TOKEN::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_ID::"
                            }
                      ~ [40]: {
                              ~ name     : "SLACK_BOT_AI_CHANNEL_ID" => "SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_TOKEN"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_AI_CHANNEL_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_TOKEN::"
                            }
                      ~ [41]: {
                              ~ name     : "SLACK_BOT_AI_CHANNEL_TOKEN" => "SLACK_BOT_AI_CHANNEL_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_AI_CHANNEL_TOKEN::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_AI_CHANNEL_ID::"
                            }
                      ~ [42]: {
                              ~ name     : "SLACK_BOT_DEV_CHANNEL_ID" => "SLACK_BOT_AI_CHANNEL_TOKEN"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_DEV_CHANNEL_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_AI_CHANNEL_TOKEN::"
                            }
                      ~ [43]: {
                              ~ name     : "SLACK_BOT_DEV_CHANNEL_TOKEN" => "SLACK_BOT_DEV_CHANNEL_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_DEV_CHANNEL_TOKEN::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_DEV_CHANNEL_ID::"
                            }
                      ~ [44]: {
                              ~ name     : "SLACK_BOT_FEEDBACK_CHANNEL_ID" => "SLACK_BOT_DEV_CHANNEL_TOKEN"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_FEEDBACK_CHANNEL_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_DEV_CHANNEL_TOKEN::"
                            }
                      ~ [45]: {
                              ~ name     : "SLACK_BOT_FEEDBACK_CHANNEL_TOKEN" => "SLACK_BOT_FEEDBACK_CHANNEL_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_FEEDBACK_CHANNEL_TOKEN::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_FEEDBACK_CHANNEL_ID::"
                            }
                      ~ [46]: {
                              ~ name     : "SLACK_BOT_PATH_TO_VICTORY_CHANNEL_ID" => "SLACK_BOT_FEEDBACK_CHANNEL_TOKEN"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_PATH_TO_VICTORY_CHANNEL_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_FEEDBACK_CHANNEL_TOKEN::"
                            }
                      ~ [47]: {
                              ~ name     : "SLACK_BOT_PATH_TO_VICTORY_CHANNEL_TOKEN" => "SLACK_BOT_PATH_TO_VICTORY_CHANNEL_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_PATH_TO_VICTORY_CHANNEL_TOKEN::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_PATH_TO_VICTORY_CHANNEL_ID::"
                            }
                      ~ [48]: {
                              ~ name     : "SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_ID" => "SLACK_BOT_PATH_TO_VICTORY_CHANNEL_TOKEN"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_PATH_TO_VICTORY_CHANNEL_TOKEN::"
                            }
                      ~ [49]: {
                              ~ name     : "SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_TOKEN" => "SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_TOKEN::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_ID::"
                            }
                      ~ [50]: {
                              ~ name     : "SLACK_BOT_POLITICS_CHANNEL_ID" => "SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_TOKEN"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_POLITICS_CHANNEL_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_TOKEN::"
                            }
                      ~ [51]: {
                              ~ name     : "SLACK_BOT_POLITICS_CHANNEL_TOKEN" => "SLACK_BOT_POLITICS_CHANNEL_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_POLITICS_CHANNEL_TOKEN::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_POLITICS_CHANNEL_ID::"
                            }
                      ~ [52]: {
                              ~ name     : "SLACK_BOT_TEVYN_API_CHANNEL_ID" => "SLACK_BOT_POLITICS_CHANNEL_TOKEN"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_TEVYN_API_CHANNEL_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_POLITICS_CHANNEL_TOKEN::"
                            }
                      ~ [53]: {
                              ~ name     : "SLACK_BOT_TEVYN_API_CHANNEL_TOKEN" => "SLACK_BOT_TEVYN_API_CHANNEL_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_TEVYN_API_CHANNEL_TOKEN::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_TEVYN_API_CHANNEL_ID::"
                            }
                      ~ [54]: {
                              ~ name     : "SLACK_USER_FEEDBACK_CHANNEL_ID" => "SLACK_BOT_TEVYN_API_CHANNEL_TOKEN"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_USER_FEEDBACK_CHANNEL_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_BOT_TEVYN_API_CHANNEL_TOKEN::"
                            }
                      ~ [55]: {
                              ~ name     : "SLACK_USER_FEEDBACK_CHANNEL_TOKEN" => "SLACK_USER_FEEDBACK_CHANNEL_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_USER_FEEDBACK_CHANNEL_TOKEN::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_USER_FEEDBACK_CHANNEL_ID::"
                            }
                      ~ [56]: {
                              ~ name     : "STRIPE_SECRET_KEY" => "SLACK_USER_FEEDBACK_CHANNEL_TOKEN"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:STRIPE_SECRET_KEY::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:SLACK_USER_FEEDBACK_CHANNEL_TOKEN::"
                            }
                      ~ [57]: {
                              ~ name     : "STRIPE_WEBSOCKET_SECRET" => "STRIPE_SECRET_KEY"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:STRIPE_WEBSOCKET_SECRET::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:STRIPE_SECRET_KEY::"
                            }
                      ~ [58]: {
                              ~ name     : "TOGETHER_AI_KEY" => "STRIPE_WEBSOCKET_SECRET"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:TOGETHER_AI_KEY::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:STRIPE_WEBSOCKET_SECRET::"
                            }
                      ~ [59]: {
                              ~ name     : "VERCEL_PROJECT_ID" => "TOGETHER_AI_KEY"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:VERCEL_PROJECT_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:TOGETHER_AI_KEY::"
                            }
                      ~ [60]: {
                              ~ name     : "VERCEL_TEAM_ID" => "VERCEL_PROJECT_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:VERCEL_TEAM_ID::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:VERCEL_PROJECT_ID::"
                            }
                      ~ [61]: {
                              ~ name     : "VERCEL_TOKEN" => "VERCEL_TEAM_ID"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:VERCEL_TOKEN::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:VERCEL_TEAM_ID::"
                            }
                      ~ [62]: {
                              ~ name     : "VOTER_DB_PASSWORD" => "VERCEL_TOKEN"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:VOTER_DB_PASSWORD::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:VERCEL_TOKEN::"
                            }
                      ~ [63]: {
                              ~ name     : "VOTER_FILE_LATEST_EVEN_YEAR" => "VOTER_DB_PASSWORD"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:VOTER_FILE_LATEST_EVEN_YEAR::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:VOTER_DB_PASSWORD::"
                            }
                      ~ [64]: {
                              ~ name     : "VOTER_FILE_LATEST_ODD_YEAR" => "VOTER_FILE_LATEST_EVEN_YEAR"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:VOTER_FILE_LATEST_ODD_YEAR::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:VOTER_FILE_LATEST_EVEN_YEAR::"
                            }
                      ~ [65]: {
                              ~ name     : "VOTER_FILE_YEARS_LENGTH" => "VOTER_FILE_LATEST_ODD_YEAR"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:VOTER_FILE_YEARS_LENGTH::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:VOTER_FILE_LATEST_ODD_YEAR::"
                            }
                      ~ [66]: {
                              ~ name     : "WINNERS_ELECTION_YEAR" => "VOTER_FILE_YEARS_LENGTH"
                              ~ valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:WINNERS_ELECTION_YEAR::" => "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:VOTER_FILE_YEARS_LENGTH::"
                            }
                      + [67]: {
                              + name     : "WINNERS_ELECTION_YEAR"
                              + valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_DEV-ag7Mf4:WINNERS_ELECTION_YEAR::"
                            }
                    ]
                  - systemControls  : []
                  - volumesFrom     : []
                }
        ]
    ~ aws:ecs/service:Service: (update)
        [id=arn:aws:ecs:us-west-2:333022194791:service/gp-develop-fargateCluster/gp-api-develop]
        [urn=urn:pulumi:gp-api-dev::gp-api::aws:ecs/service:Service::ecsService]
        [provider=urn:pulumi:gp-api-dev::gp-api::pulumi:providers:aws::default_6_67_0::c607b162-eb6f-4039-a111-2e624ce0d017]
      ~ taskDefinition: "arn:aws:ecs:us-west-2:333022194791:task-definition/gp-develop-fargateCluster-gp-api-develop:733" => [unknown]
Resources:
    + 1 to create
    ~ 1 to update
    +-1 to replace
    3 changes. 70 unchanged

qa

1 create, 1 replace, 68 same, 1 update

Show diff
Previewing update (gp-api-qa):
  pulumi:pulumi:Stack: (same)
    [urn=urn:pulumi:gp-api-qa::gp-api::pulumi:pulumi:Stack::gp-api-gp-api-qa]
    +-aws:ecs/taskDefinition:TaskDefinition: (replace)
        [id=gp-qa-fargateCluster-gp-api-qa]
        [urn=urn:pulumi:gp-api-qa::gp-api::aws:ecs/taskDefinition:TaskDefinition::taskDefinition]
        [provider=urn:pulumi:gp-api-qa::gp-api::pulumi:providers:aws::default_6_67_0::cc533239-b6f2-449d-8f3a-defa737c714c]
      ~ containerDefinitions: (json) [
          ~ [0]: {
                    cpu             : 512
                  ~ environment     : [
                        [0]: {
                                name : "AI_MODELS"
                                value: "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8,Qwen/Qwen3-235B-A22B-fp8-tput"
                            }
                        [1]: {
                                name : "ASSET_DOMAIN"
                                value: "assets-qa.goodparty.org"
                            }
                        [2]: {
                                name : "AWS_REGION"
                                value: "us-west-2"
                            }
                        [3]: {
                                name : "CORS_ORIGIN"
                                value: "qa.goodparty.org"
                            }
                        [4]: {
                                name : "DB_HOST"
                                value: "gp-api-db-qa.cluster-cmb1uukjsfbe.us-west-2.rds.amazonaws.com"
                            }
                        [5]: {
                                name : "DB_NAME"
                                value: "gpdb"
                            }
                        [6]: {
                                name : "DB_USER"
                                value: "gpuser"
                            }
                        [7]: {
                                name : "HOST"
                                value: "0.0.0.0"
                            }
                        [8]: {
                                name : "LLAMA_AI_ASSISTANT"
                                value: "asst_GP_AI_1.0"
                            }
                        [9]: {
                                name : "LOG_LEVEL"
                                value: "debug"
                            }
                        [10]: {
                                name : "OTEL_SERVICE_ENVIRONMENT"
                                value: "qa"
                            }
                        [11]: {
                                name : "PORT"
                                value: "80"
                            }
                        [12]: {
                                name : "SECRET_NAMES"
                                value: "AUTH_SECRET,CONTENTFUL_SPACE_ID,CONTENTFUL_ACCESS_TOKEN,MAILGUN_API_KEY,ASHBY_KEY,FULLSTORY_API_KEY,TOGETHER_AI_KEY,OPEN_AI_KEY,GOOGLE_CLIENT_ID,GOOGL..."
                            }
                        [13]: {
                                name : "SERVE_ANALYSIS_BUCKET_NAME"
                                value: "serve-analyze-data-qa"
                            }
                        [14]: {
                                name : "SQS_QUEUE"
                                value: "qa-Queue.fifo"
                            }
                        [15]: {
                                name : "SQS_QUEUE_BASE_URL"
                                value: "https://sqs.us-west-2.amazonaws.com/333022194791"
                            }
                      ~ [16]: {
                              ~ name : "TEVYN_POLL_CSVS_BUCKET" => "TCR_COMPLIANCE_BACKDOOR_ENABLED"
                              ~ value: "tevyn-poll-csvs-qa" => "true"
                            }
                      ~ [17]: {
                              ~ name : "VOTER_DB_HOST" => "TEVYN_POLL_CSVS_BUCKET"
                              ~ value: "gp-voter-db-20250728.cluster-cmb1uukjsfbe.us-west-2.rds.amazonaws.com" => "tevyn-poll-csvs-qa"
                            }
                      ~ [18]: {
                              ~ name : "VOTER_DB_NAME" => "VOTER_DB_HOST"
                              ~ value: "voters" => "gp-voter-db-20250728.cluster-cmb1uukjsfbe.us-west-2.rds.amazonaws.com"
                            }
                      ~ [19]: {
                              ~ name : "VOTER_DB_USER" => "VOTER_DB_NAME"
                              ~ value: "postgres" => "voters"
                            }
                      ~ [20]: {
                              ~ name : "WEBAPP_ROOT_URL" => "VOTER_DB_USER"
                              ~ value: "https://qa.goodparty.org" => "postgres"
                            }
                      ~ [21]: {
                              ~ name : "ZIP_TO_AREA_CODE_BUCKET" => "WEBAPP_ROOT_URL"
                              ~ value: "zip-to-area-code-mappings-qa" => "https://qa.goodparty.org"
                            }
                      + [22]: {
                              + name : "ZIP_TO_AREA_CODE_BUCKET"
                              + value: "zip-to-area-code-mappings-qa"
                            }
                    ]
                    essential       : true
                    image           : "333022194791.dkr.ecr.us-west-2.amazonaws.com/gp-api:45d5969ce592bd987eca231ca6396db90a282cf5"
                    linuxParameters : {
                        initProcessEnabled: true
                    }
                    logConfiguration: {
                        logDriver: "awslogs"
                        options  : {
                            awslogs-group        : "/sst/cluster/gp-qa-fargateCluster/gp-api-qa/gp-api-qa"
                            awslogs-region       : "us-west-2"
                            awslogs-stream-prefix: "/service"
                        }
                    }
                    memory          : 2048
                  - mountPoints     : []
                    name            : "gp-api-qa"
                    portMappings    : [
                        [0]: {
                            containerPort: 80
                            hostPort     : 80
                            protocol     : "tcp"
                        }
                    ]
                    pseudoTerminal  : true
                    secrets         : [
                        [0]: {
                            name     : "AMPLITUDE_PROJECT_API_KEY"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:AMPLITUDE_PROJECT_API_KEY::"
                        }
                        [1]: {
                            name     : "ASHBY_KEY"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:ASHBY_KEY::"
                        }
                        [2]: {
                            name     : "AUTH_SECRET"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:AUTH_SECRET::"
                        }
                        [3]: {
                            name     : "BALLOT_READY_KEY"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:BALLOT_READY_KEY::"
                        }
                        [4]: {
                            name     : "BRAINTRUST_API_KEY"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:BRAINTRUST_API_KEY::"
                        }
                        [5]: {
                            name     : "CLERK_PUBLISHABLE_KEY"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:CLERK_PUBLISHABLE_KEY::"
                        }
                        [6]: {
                            name     : "CLERK_SECRET_KEY"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:CLERK_SECRET_KEY::"
                        }
                        [7]: {
                            name     : "CONTENTFUL_ACCESS_TOKEN"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:CONTENTFUL_ACCESS_TOKEN::"
                        }
                        [8]: {
                            name     : "CONTENTFUL_SPACE_ID"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:CONTENTFUL_SPACE_ID::"
                        }
                        [9]: {
                            name     : "DB_PASSWORD"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:DB_PASSWORD::"
                        }
                        [10]: {
                            name     : "ELECTION_API_URL"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:ELECTION_API_URL::"
                        }
                        [11]: {
                            name     : "FORWARDEMAIL_API_TOKEN"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:FORWARDEMAIL_API_TOKEN::"
                        }
                        [12]: {
                            name     : "FORWARDEMAIL_BASE_URL"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:FORWARDEMAIL_BASE_URL::"
                        }
                        [13]: {
                            name     : "FULLSTORY_API_KEY"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:FULLSTORY_API_KEY::"
                        }
                        [14]: {
                            name     : "GOOGLE_API_KEY"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:GOOGLE_API_KEY::"
                        }
                        [15]: {
                            name     : "GOOGLE_CLIENT_ID"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:GOOGLE_CLIENT_ID::"
                        }
                        [16]: {
                            name     : "GP_WEBAPP_MACHINE_SECRET"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:GP_WEBAPP_MACHINE_SECRET::"
                        }
                        [17]: {
                            name     : "L2_DATA_KEY"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:L2_DATA_KEY::"
                        }
                        [18]: {
                            name     : "MAILGUN_API_KEY"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:MAILGUN_API_KEY::"
                        }
                        [19]: {
                            name     : "NO_COLOR"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:NO_COLOR::"
                        }
                        [20]: {
                            name     : "OPEN_AI_KEY"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:OPEN_AI_KEY::"
                        }
                        [21]: {
                            name     : "OTEL_EXPORTER_OTLP_HEADERS"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:OTEL_EXPORTER_OTLP_HEADERS::"
                        }
                        [22]: {
                            name     : "PEERLY_ACCOUNT_NUMBER"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:PEERLY_ACCOUNT_NUMBER::"
                        }
                        [23]: {
                            name     : "PEERLY_API_BASE_URL"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:PEERLY_API_BASE_URL::"
                        }
                        [24]: {
                            name     : "PEERLY_MD5_EMAIL"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:PEERLY_MD5_EMAIL::"
                        }
                        [25]: {
                            name     : "PEERLY_MD5_PASSWORD"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:PEERLY_MD5_PASSWORD::"
                        }
                        [26]: {
                            name     : "PEERLY_SCHEDULE_ID"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:PEERLY_SCHEDULE_ID::"
                        }
                        [27]: {
                            name     : "PEERLY_TEST_ENVIRONMENT"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:PEERLY_TEST_ENVIRONMENT::"
                        }
                        [28]: {
                            name     : "PEOPLE_API_S2S_SECRET"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:PEOPLE_API_S2S_SECRET::"
                        }
                        [29]: {
                            name     : "PEOPLE_API_URL"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:PEOPLE_API_URL::"
                        }
                        [30]: {
                            name     : "RUMBLE_APP_ACCOUNT_ID"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:RUMBLE_APP_ACCOUNT_ID::"
                        }
                        [31]: {
                            name     : "RUMBLE_APP_API_KEY"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:RUMBLE_APP_API_KEY::"
                        }
                        [32]: {
                            name     : "SEGMENT_WRITE_KEY"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SEGMENT_WRITE_KEY::"
                        }
                        [33]: {
                            name     : "SERVE_ANALYZE_S3_BUCKET"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SERVE_ANALYZE_S3_BUCKET::"
                        }
                        [34]: {
                            name     : "SLACK_APP_BOT_TOKEN"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_APP_BOT_TOKEN::"
                        }
                        [35]: {
                            name     : "SLACK_APP_ID"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_APP_ID::"
                        }
                        [36]: {
                            name     : "SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_ID"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_ID::"
                        }
                        [37]: {
                            name     : "SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_TOKEN"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_BOT_10DLC_COMPLIANCE_CHANNEL_TOKEN::"
                        }
                        [38]: {
                            name     : "SLACK_BOT_AI_CHANNEL_ID"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_BOT_AI_CHANNEL_ID::"
                        }
                        [39]: {
                            name     : "SLACK_BOT_AI_CHANNEL_TOKEN"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_BOT_AI_CHANNEL_TOKEN::"
                        }
                        [40]: {
                            name     : "SLACK_BOT_DEV_CHANNEL_ID"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_BOT_DEV_CHANNEL_ID::"
                        }
                        [41]: {
                            name     : "SLACK_BOT_DEV_CHANNEL_TOKEN"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_BOT_DEV_CHANNEL_TOKEN::"
                        }
                        [42]: {
                            name     : "SLACK_BOT_FEEDBACK_CHANNEL_ID"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_BOT_FEEDBACK_CHANNEL_ID::"
                        }
                        [43]: {
                            name     : "SLACK_BOT_FEEDBACK_CHANNEL_TOKEN"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_BOT_FEEDBACK_CHANNEL_TOKEN::"
                        }
                        [44]: {
                            name     : "SLACK_BOT_PATH_TO_VICTORY_CHANNEL_ID"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_BOT_PATH_TO_VICTORY_CHANNEL_ID::"
                        }
                        [45]: {
                            name     : "SLACK_BOT_PATH_TO_VICTORY_CHANNEL_TOKEN"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_BOT_PATH_TO_VICTORY_CHANNEL_TOKEN::"
                        }
                        [46]: {
                            name     : "SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_ID"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_ID::"
                        }
                        [47]: {
                            name     : "SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_TOKEN"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_BOT_PATH_TO_VICTORY_ISSUES_CHANNEL_TOKEN::"
                        }
                        [48]: {
                            name     : "SLACK_BOT_POLITICS_CHANNEL_ID"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_BOT_POLITICS_CHANNEL_ID::"
                        }
                        [49]: {
                            name     : "SLACK_BOT_POLITICS_CHANNEL_TOKEN"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_BOT_POLITICS_CHANNEL_TOKEN::"
                        }
                        [50]: {
                            name     : "SLACK_BOT_TEVYN_API_CHANNEL_ID"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secret:GP_API_QA-w290tg:SLACK_BOT_TEVYN_API_CHANNEL_ID::"
                        }
                        [51]: {
                            name     : "SLACK_BOT_TEVYN_API_CHANNEL_TOKEN"
                            valueFrom: "arn:aws:secretsmanager:us-west-2:333022194791:secre...*[Comment body truncated]*

@github-actions

Copy link
Copy Markdown
Contributor

Preview Environment

Your preview environment is ready!

Resource URL
API https://pr-1336.preview.goodparty.org
Health Check https://pr-1336.preview.goodparty.org/v1/health

This environment will be automatically destroyed when the PR is closed.

update: { status: dto.tcrComplianceStatus },
create: {
campaignId: campaign.id,
ein: '00-0000000',

@dealvz dealvz Mar 20, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will this be okay when we hit peerly? the ein always being 00-0000000? or does it need to be dynamic

@feliksalbright @RavenHursT

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants