Skip to content

fix: route lambda sub-paths via API Gateway proxy + shared dispatcher#257

Draft
nourshoreibah wants to merge 7 commits into
mainfrom
fix/api-routing-dispatcher
Draft

fix: route lambda sub-paths via API Gateway proxy + shared dispatcher#257
nourshoreibah wants to merge 7 commits into
mainfrom
fix/api-routing-dispatcher

Conversation

@nourshoreibah

@nourshoreibah nourshoreibah commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator

Why

Routing logic was duplicated across all six lambda handlers — each hand-rolled its own prefix stripping, OPTIONS/CORS handling, health check, and if-chain routing. This PR extracts that into one shared dispatcher so handlers only declare routes, and reconciles the refactor with the CORS, S3-upload, and static-export work that landed on main in the meantime.

What

  • shared/lambda-http (@branch/lambda-http)dispatch(event, { prefix, routes }): a route-table router with :param matching and path canonicalization, so one table works behind API Gateway (full path) and the dev-server (prefix-stripped). Centralizes json()/CORS, OPTIONS preflight, /health, 404, and 500.
  • All 6 handlers converted to route tables with full prefixed patterns; business logic preserved verbatim.
  • infrastructure/aws/api_gateway.tfANY on the bare resource + {proxy+} per lambda (no per-method enumeration); each lambda owns its routing. Keeps main's gateway_response.cors so API-Gateway-generated 4XX/5XX errors carry CORS headers instead of surfacing as opaque browser CORS errors.
  • esbuild packaging — each lambda bundles into a self-contained dist/handler.js (@aws-sdk/* external, provided by the node20 runtime); reports also ships pdfmake fonts.
  • tools/lambda-cli.js now scaffolds dispatch-based handlers / route-table entries.

Verification

Make sure things look ok in the test environment

Notes

  • Gateway authorization stays NONE; lambdas keep their own Cognito authz.
  • test-environment uses the prod DB + Cognito — smoke-test with care.

🤖 Generated with Claude Code

nourshoreibah and others added 6 commits June 30, 2026 00:09
The REST API exposed only single-segment resources (/auth, /projects, ...)
with per-method integrations and no {proxy+}, so any sub-path (/auth/login,
/projects/123/members) matched no resource and API Gateway returned 403 — the
lambda never ran. Even bare paths 404'd inside the lambda because handlers were
written for the dev-server's prefix-stripped shape while API Gateway forwards
the full path. Separately, shared file: deps were never bundled into the deploy
zip (latent MODULE_NOT_FOUND).

Changes:
- infrastructure/aws/api_gateway.tf: greedy {proxy+} + ANY per lambda (forwards
  full path, routes OPTIONS preflight, fixes missing PUT); deployment redeploy
  trigger. Removes the per-method map.
- shared/lambda-http (@branch/lambda-http): dispatch({prefix,routes}) route-table
  router with :param matching + path canonicalization (one table works behind
  API Gateway's full path and the dev-server's stripped path); centralizes
  json()/CORS, OPTIONS, /health, 404, 500.
- All 6 handlers converted to route tables with full prefixed patterns; business
  logic preserved.
- esbuild bundling: each lambda's package script bundles handler + shared deps
  into one dist/handler.js (@aws-sdk external); CI builds lambda-http. Fixes the
  shared-dep packaging gap.
- lambda-cli.js emits route-table entries; openapi specs normalized to full
  prefixed paths (+ fixed pre-existing donors dup key / reports YAML colon).
- next.config.ts: dev rewrites no longer strip the service prefix.
- AGENTS.md (root, backend, lambdas, infra, frontend) updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Each service Dockerfile copied + built shared/lambda-auth into /shared so its
file: dep resolved; @branch/lambda-http (new runtime dep) needs the same or the
container can't resolve it. Add the lambda-http copy+build to the 5 repo-root
services, and switch auth's build context to the repo root (it was ./lambdas/auth,
which can't see ../../../../shared) with a matching Dockerfile.

Verified: docker compose build + up for auth and projects — /auth/health,
/auth/login (routed, 400 not 404), /projects health/list/:id/members all 200,
unknown path -> 404. Shared dev-server (npm run dev) verified separately.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
  - Auto-formatted .tf files with terraform fmt
  - Updated README.md with terraform-docs

  Co-authored-by: nourshoreibah <nourshoreibah@users.noreply.github.com>
Reconcile the shared-dispatcher routing refactor with main's CORS fixes
(#277/#279), S3 report uploads, and static-export frontend.

Resolution:
- Handlers keep the @branch/lambda-http dispatch() architecture. Re-applied
  main's functional deltas on top: projects PUT uses ProjectValidationUtils
  .buildUpdateValues (+ JSON guard, reject empty); reports gains
  POST /reports/generate, GET /reports/upload-url (S3 presign), and
  POST /reports (record uploaded file), and saveReportRecord now passes title.
- api_gateway.tf keeps the branch ANY-on-root + {proxy+} model; ported main's
  aws_api_gateway_gateway_response.cors so APIGW 4XX/5XX errors carry CORS
  headers. Dropped main's duplicated proxy resources left by the auto-merge.
- next.config.ts takes main's static-export config (dev rewrites obsolete;
  apiFetch targets service ports / NEXT_PUBLIC_API_BASE_URL directly).
- Lambda build scripts keep cjs + --external:@aws-sdk/*; reports retains
  main's pdfmake font-copy step.
- Regenerated lambda package-lock.json files.

Verified: all 6 lambdas + frontend typecheck clean; reports unit 44/44,
projects unit + dashboard unit pass; terraform fmt + validate succeed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@nourshoreibah nourshoreibah added the test-environment Creates a temporary (nearly free) test environment. Uses prod DB and cognito label Jul 7, 2026
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

🌿 ⏳ Creating preview environment… (logs)

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

🌿 Preview environment — failed ❌ to create. See the workflow logs.

…ilds

Two issues surfaced packaging lambdas in the preview env:

1. The main merge left a duplicate `esbuild` devDependency in all six lambda
   package.json files (branch's ^0.25.12 + main's ^0.25.0). JSON tolerates
   duplicate keys (last wins) so it validated, but esbuild warns and the older
   pin would win. Kept ^0.25.12, dropped ^0.25.0.

2. `@branch/lambda-http` failed to resolve during `npm run package` because
   preview-env.yml built shared/lambda-auth but not shared/lambda-http. The
   shared-package list was hardcoded in three workflows (lambda-deploy,
   lambda-tests, preview-env), so adding lambda-http meant it silently broke
   wherever a line was missed.

Replace the hardcoded lines with scripts/build-shared.sh, which builds every
shared package that declares a `build` script (skips shared/types). Adding a
shared package now needs no workflow edits. All three workflows call it.

Verified: all six lambdas `npm run package` clean (no duplicate-key warning,
lambda-http resolves); the three workflows parse.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Terraform Plan 📖 infrastructure/aws

Terraform Initialization ⚙️success

Terraform Validation 🤖success

Terraform Plan 📖success

Show Plan
data.archive_file.lambda_placeholder: Reading...
data.archive_file.lambda_placeholder: Read complete after 0s [id=96878a51e358033297a32b882fd5223cc95fb8a7]
aws_api_gateway_method.lambda_methods["projects-POST"]: Refreshing state... [id=agm-2apxzxb0r8-chhy2i-POST]
aws_api_gateway_integration.lambda_integrations["donors-GET"]: Refreshing state... [id=agi-2apxzxb0r8-hybur2-GET]
aws_api_gateway_integration.lambda_integrations["auth-POST"]: Refreshing state... [id=agi-2apxzxb0r8-u8unad-POST]
aws_api_gateway_integration.lambda_integrations["expenditures-OPTIONS"]: Refreshing state... [id=agi-2apxzxb0r8-6sdj3w-OPTIONS]
aws_api_gateway_method.lambda_methods["donors-OPTIONS"]: Refreshing state... [id=agm-2apxzxb0r8-hybur2-OPTIONS]
aws_api_gateway_method.lambda_methods["users-OPTIONS"]: Refreshing state... [id=agm-2apxzxb0r8-0dkbds-OPTIONS]
aws_api_gateway_integration.lambda_integrations["auth-GET"]: Refreshing state... [id=agi-2apxzxb0r8-u8unad-GET]
aws_api_gateway_method.lambda_methods["users-DELETE"]: Refreshing state... [id=agm-2apxzxb0r8-0dkbds-DELETE]
aws_api_gateway_integration.lambda_proxy_integrations["expenditures"]: Refreshing state... [id=agi-2apxzxb0r8-14khv0-ANY]
aws_api_gateway_integration.lambda_integrations["projects-POST"]: Refreshing state... [id=agi-2apxzxb0r8-chhy2i-POST]
aws_api_gateway_integration.lambda_integrations["users-DELETE"]: Refreshing state... [id=agi-2apxzxb0r8-0dkbds-DELETE]
aws_api_gateway_integration.lambda_integrations["auth-OPTIONS"]: Refreshing state... [id=agi-2apxzxb0r8-u8unad-OPTIONS]
aws_api_gateway_integration.lambda_integrations["reports-OPTIONS"]: Refreshing state... [id=agi-2apxzxb0r8-wsnfk2-OPTIONS]
aws_api_gateway_method.lambda_methods["reports-OPTIONS"]: Refreshing state... [id=agm-2apxzxb0r8-wsnfk2-OPTIONS]
aws_api_gateway_integration.lambda_integrations["projects-OPTIONS"]: Refreshing state... [id=agi-2apxzxb0r8-chhy2i-OPTIONS]
aws_api_gateway_method.lambda_methods["projects-GET"]: Refreshing state... [id=agm-2apxzxb0r8-chhy2i-GET]
aws_api_gateway_integration.lambda_integrations["projects-GET"]: Refreshing state... [id=agi-2apxzxb0r8-chhy2i-GET]
aws_api_gateway_integration.lambda_integrations["expenditures-POST"]: Refreshing state... [id=agi-2apxzxb0r8-6sdj3w-POST]
aws_api_gateway_integration.lambda_integrations["donors-OPTIONS"]: Refreshing state... [id=agi-2apxzxb0r8-hybur2-OPTIONS]
aws_api_gateway_method.lambda_methods["reports-GET"]: Refreshing state... [id=agm-2apxzxb0r8-wsnfk2-GET]
aws_api_gateway_method.lambda_methods["auth-GET"]: Refreshing state... [id=agm-2apxzxb0r8-u8unad-GET]
aws_api_gateway_method.lambda_methods["expenditures-OPTIONS"]: Refreshing state... [id=agm-2apxzxb0r8-6sdj3w-OPTIONS]
aws_api_gateway_method.lambda_methods["expenditures-GET"]: Refreshing state... [id=agm-2apxzxb0r8-6sdj3w-GET]
aws_api_gateway_method.lambda_methods["users-PATCH"]: Refreshing state... [id=agm-2apxzxb0r8-0dkbds-PATCH]
aws_api_gateway_method.lambda_methods["expenditures-POST"]: Refreshing state... [id=agm-2apxzxb0r8-6sdj3w-POST]
aws_api_gateway_integration.lambda_proxy_integrations["projects"]: Refreshing state... [id=agi-2apxzxb0r8-kmwcxq-ANY]
aws_api_gateway_integration.lambda_proxy_integrations["auth"]: Refreshing state... [id=agi-2apxzxb0r8-srhf9j-ANY]
aws_api_gateway_method.lambda_methods["projects-OPTIONS"]: Refreshing state... [id=agm-2apxzxb0r8-chhy2i-OPTIONS]
aws_api_gateway_integration.lambda_integrations["users-POST"]: Refreshing state... [id=agi-2apxzxb0r8-0dkbds-POST]
aws_api_gateway_integration.lambda_integrations["users-GET"]: Refreshing state... [id=agi-2apxzxb0r8-0dkbds-GET]
aws_api_gateway_method.lambda_methods["auth-POST"]: Refreshing state... [id=agm-2apxzxb0r8-u8unad-POST]
aws_api_gateway_integration.lambda_proxy_integrations["donors"]: Refreshing state... [id=agi-2apxzxb0r8-xkazax-ANY]
aws_api_gateway_method.lambda_methods["users-GET"]: Refreshing state... [id=agm-2apxzxb0r8-0dkbds-GET]
aws_api_gateway_method.lambda_methods["users-POST"]: Refreshing state... [id=agm-2apxzxb0r8-0dkbds-POST]
aws_api_gateway_integration.lambda_proxy_integrations["reports"]: Refreshing state... [id=agi-2apxzxb0r8-elsvn3-ANY]
aws_api_gateway_integration.lambda_integrations["reports-GET"]: Refreshing state... [id=agi-2apxzxb0r8-wsnfk2-GET]
aws_api_gateway_method.lambda_methods["auth-OPTIONS"]: Refreshing state... [id=agm-2apxzxb0r8-u8unad-OPTIONS]
aws_api_gateway_integration.lambda_proxy_integrations["users"]: Refreshing state... [id=agi-2apxzxb0r8-4sjlu3-ANY]
aws_api_gateway_method.lambda_methods["donors-GET"]: Refreshing state... [id=agm-2apxzxb0r8-hybur2-GET]
aws_api_gateway_integration.lambda_integrations["users-PATCH"]: Refreshing state... [id=agi-2apxzxb0r8-0dkbds-PATCH]
aws_iam_role.lambda_role: Refreshing state... [id=branch-lambda-role]
aws_api_gateway_integration.lambda_integrations["users-OPTIONS"]: Refreshing state... [id=agi-2apxzxb0r8-0dkbds-OPTIONS]
aws_api_gateway_rest_api.branch_api: Refreshing state... [id=2apxzxb0r8]
aws_api_gateway_integration.lambda_integrations["expenditures-GET"]: Refreshing state... [id=agi-2apxzxb0r8-6sdj3w-GET]
aws_s3_bucket.reports_bucket: Refreshing state... [id=c4c-branch-generated-reports20251030194253425700000001]
aws_cloudfront_function.rewrite_index: Refreshing state... [id=branch-frontend-rewrite-index]
aws_iam_openid_connect_provider.github: Refreshing state... [id=arn:aws:iam::489881683177:oidc-provider/token.actions.githubusercontent.com]
aws_cloudfront_origin_access_control.frontend: Refreshing state... [id=E2T090T8V5CDLN]
aws_cognito_user_pool.branch_user_pool: Refreshing state... [id=us-east-2_CxTueqe6g]
data.aws_caller_identity.current: Reading...
data.aws_caller_identity.current: Read complete after 0s [id=489881683177]
aws_s3_bucket.frontend: Refreshing state... [id=branch-frontend-489881683177]
aws_s3_bucket.lambda_deployments: Refreshing state... [id=branch-lambda-deployments-489881683177]
aws_api_gateway_gateway_response.cors["DEFAULT_4XX"]: Refreshing state... [id=aggr-2apxzxb0r8-DEFAULT_4XX]
aws_api_gateway_gateway_response.cors["DEFAULT_5XX"]: Refreshing state... [id=aggr-2apxzxb0r8-DEFAULT_5XX]
aws_api_gateway_resource.lambda_resources["reports"]: Refreshing state... [id=wsnfk2]
aws_api_gateway_resource.lambda_resources["auth"]: Refreshing state... [id=u8unad]
aws_api_gateway_resource.lambda_resources["projects"]: Refreshing state... [id=chhy2i]
aws_api_gateway_resource.lambda_resources["users"]: Refreshing state... [id=0dkbds]
aws_api_gateway_resource.lambda_resources["donors"]: Refreshing state... [id=hybur2]
aws_api_gateway_resource.lambda_resources["expenditures"]: Refreshing state... [id=6sdj3w]
data.aws_iam_policy_document.ci_apply_assume: Reading...
data.aws_iam_policy_document.ci_apply_assume: Read complete after 0s [id=813913]
data.aws_iam_policy_document.ci_preview_assume: Reading...
data.aws_iam_policy_document.ci_preview_assume: Read complete after 0s [id=282080688]
data.aws_iam_policy_document.ci_plan_assume: Reading...
data.aws_iam_policy_document.ci_plan_assume: Read complete after 0s [id=3057813384]
aws_iam_role_policy_attachment.lambda_basic: Refreshing state... [id=branch-lambda-role/arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole]
aws_iam_role.ci_apply: Refreshing state... [id=branch-ci-apply]
aws_iam_role.ci_preview: Refreshing state... [id=branch-ci-preview]
aws_iam_role.ci_plan: Refreshing state... [id=branch-ci-plan]
aws_api_gateway_resource.lambda_proxy["auth"]: Refreshing state... [id=srhf9j]
aws_api_gateway_resource.lambda_proxy["projects"]: Refreshing state... [id=kmwcxq]
aws_api_gateway_resource.lambda_proxy["users"]: Refreshing state... [id=4sjlu3]
aws_api_gateway_resource.lambda_proxy["donors"]: Refreshing state... [id=xkazax]
aws_api_gateway_resource.lambda_proxy["reports"]: Refreshing state... [id=elsvn3]
aws_api_gateway_resource.lambda_proxy["expenditures"]: Refreshing state... [id=14khv0]
aws_cognito_user_pool_client.branch_client: Refreshing state... [id=570i6ocj0882qu0ditm4vrr60f]
aws_api_gateway_method.lambda_proxy_any["auth"]: Refreshing state... [id=agm-2apxzxb0r8-srhf9j-ANY]
aws_api_gateway_method.lambda_proxy_any["projects"]: Refreshing state... [id=agm-2apxzxb0r8-kmwcxq-ANY]
aws_api_gateway_method.lambda_proxy_any["expenditures"]: Refreshing state... [id=agm-2apxzxb0r8-14khv0-ANY]
aws_api_gateway_method.lambda_proxy_any["users"]: Refreshing state... [id=agm-2apxzxb0r8-4sjlu3-ANY]
aws_api_gateway_method.lambda_proxy_any["donors"]: Refreshing state... [id=agm-2apxzxb0r8-xkazax-ANY]
aws_api_gateway_method.lambda_proxy_any["reports"]: Refreshing state... [id=agm-2apxzxb0r8-elsvn3-ANY]
aws_iam_role_policy_attachment.ci_apply_admin: Refreshing state... [id=branch-ci-apply/arn:aws:iam::aws:policy/AdministratorAccess]
aws_iam_role_policy.ci_preview: Refreshing state... [id=branch-ci-preview:preview-env]
aws_iam_role_policy_attachment.ci_plan_readonly: Refreshing state... [id=branch-ci-plan/arn:aws:iam::aws:policy/ReadOnlyAccess]
aws_iam_role_policy.ci_plan_state_lock: Refreshing state... [id=branch-ci-plan:tfstate-lock]
aws_s3_bucket_public_access_block.reports_bucket_public_access: Refreshing state... [id=c4c-branch-generated-reports20251030194253425700000001]
data.infisical_secrets.github_folder: Reading...
data.infisical_secrets.rds_folder: Reading...
aws_s3_bucket_policy.reports_bucket_policy: Refreshing state... [id=c4c-branch-generated-reports20251030194253425700000001]
aws_s3_bucket_versioning.lambda_deployments: Refreshing state... [id=branch-lambda-deployments-489881683177]
aws_s3_bucket_server_side_encryption_configuration.lambda_deployments: Refreshing state... [id=branch-lambda-deployments-489881683177]
aws_s3_object.lambda_placeholder["expenditures"]: Refreshing state... [id=branch-lambda-deployments-489881683177/expenditures/initial.zip]
aws_s3_object.lambda_placeholder["reports"]: Refreshing state... [id=branch-lambda-deployments-489881683177/reports/initial.zip]
aws_s3_object.lambda_placeholder["users"]: Refreshing state... [id=branch-lambda-deployments-489881683177/users/initial.zip]
data.infisical_secrets.rds_folder: Read complete after 0s
aws_s3_object.lambda_placeholder["auth"]: Refreshing state... [id=branch-lambda-deployments-489881683177/auth/initial.zip]
aws_s3_object.lambda_placeholder["donors"]: Refreshing state... [id=branch-lambda-deployments-489881683177/donors/initial.zip]
aws_s3_object.lambda_placeholder["projects"]: Refreshing state... [id=branch-lambda-deployments-489881683177/projects/initial.zip]
aws_s3_bucket_public_access_block.frontend: Refreshing state... [id=branch-frontend-489881683177]
aws_cloudfront_distribution.frontend: Refreshing state... [id=E37FDHRYNZNF4R]
aws_db_instance.branch_rds: Refreshing state... [id=db-AMMYFTORW6XJGRELV7WQZCNHQI]
data.aws_iam_policy_document.frontend_bucket: Reading...
data.aws_iam_policy_document.frontend_bucket: Read complete after 0s [id=1471335443]
aws_s3_bucket_policy.frontend: Refreshing state... [id=branch-frontend-489881683177]
aws_lambda_function.functions["reports"]: Refreshing state... [id=branch-reports]
aws_lambda_function.functions["expenditures"]: Refreshing state... [id=branch-expenditures]
aws_lambda_function.functions["auth"]: Refreshing state... [id=branch-auth]
aws_lambda_function.functions["users"]: Refreshing state... [id=branch-users]
aws_lambda_function.functions["projects"]: Refreshing state... [id=branch-projects]
aws_lambda_function.functions["donors"]: Refreshing state... [id=branch-donors]
data.infisical_secrets.github_folder: Read complete after 1s
aws_lambda_permission.api_gateway_permissions["projects"]: Refreshing state... [id=AllowAPIGatewayInvoke]
aws_lambda_permission.api_gateway_permissions["reports"]: Refreshing state... [id=AllowAPIGatewayInvoke]
aws_lambda_permission.api_gateway_permissions["donors"]: Refreshing state... [id=AllowAPIGatewayInvoke]
aws_lambda_permission.api_gateway_permissions["expenditures"]: Refreshing state... [id=AllowAPIGatewayInvoke]
aws_lambda_permission.api_gateway_permissions["users"]: Refreshing state... [id=AllowAPIGatewayInvoke]
aws_lambda_permission.api_gateway_permissions["auth"]: Refreshing state... [id=AllowAPIGatewayInvoke]
aws_api_gateway_deployment.branch_deployment: Refreshing state... [id=q2mwqp]
aws_api_gateway_stage.branch_stage: Refreshing state... [id=ags-2apxzxb0r8-prod]

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  + create
  ~ update in-place
  - destroy
+/- create replacement and then destroy

Terraform will perform the following actions:

  # aws_api_gateway_deployment.branch_deployment must be replaced
+/- resource "aws_api_gateway_deployment" "branch_deployment" {
      ~ created_date = "2026-07-01T23:26:20Z" -> (known after apply)
      ~ id           = "q2mwqp" -> (known after apply)
      ~ triggers     = {
          - "redeploy" = "e11e8e0a5b37de832e2339de95aabd69deaa7756"
        } -> (known after apply) # forces replacement
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_gateway_response.cors["DEFAULT_4XX"] will be updated in-place
  ~ resource "aws_api_gateway_gateway_response" "cors" {
        id                  = "aggr-2apxzxb0r8-DEFAULT_4XX"
      ~ response_templates  = {
          - "application/json" = "{\"message\":$context.error.messageString}" -> null
        }
        # (5 unchanged attributes hidden)
    }

  # aws_api_gateway_gateway_response.cors["DEFAULT_5XX"] will be updated in-place
  ~ resource "aws_api_gateway_gateway_response" "cors" {
        id                  = "aggr-2apxzxb0r8-DEFAULT_5XX"
      ~ response_templates  = {
          - "application/json" = "{\"message\":$context.error.messageString}" -> null
        }
        # (5 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["auth-GET"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "u8unad" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "GET" -> null
      - id                      = "agi-2apxzxb0r8-u8unad-GET" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "u8unad" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-auth/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["auth-OPTIONS"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "u8unad" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "OPTIONS" -> null
      - id                      = "agi-2apxzxb0r8-u8unad-OPTIONS" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "u8unad" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-auth/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["auth-POST"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "u8unad" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "POST" -> null
      - id                      = "agi-2apxzxb0r8-u8unad-POST" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "u8unad" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-auth/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["donors-GET"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "hybur2" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "GET" -> null
      - id                      = "agi-2apxzxb0r8-hybur2-GET" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "hybur2" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-donors/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["donors-OPTIONS"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "hybur2" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "OPTIONS" -> null
      - id                      = "agi-2apxzxb0r8-hybur2-OPTIONS" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "hybur2" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-donors/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["expenditures-GET"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "6sdj3w" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "GET" -> null
      - id                      = "agi-2apxzxb0r8-6sdj3w-GET" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "6sdj3w" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-expenditures/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["expenditures-OPTIONS"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "6sdj3w" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "OPTIONS" -> null
      - id                      = "agi-2apxzxb0r8-6sdj3w-OPTIONS" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "6sdj3w" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-expenditures/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["expenditures-POST"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "6sdj3w" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "POST" -> null
      - id                      = "agi-2apxzxb0r8-6sdj3w-POST" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "6sdj3w" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-expenditures/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["projects-GET"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "chhy2i" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "GET" -> null
      - id                      = "agi-2apxzxb0r8-chhy2i-GET" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "chhy2i" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-projects/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["projects-OPTIONS"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "chhy2i" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "OPTIONS" -> null
      - id                      = "agi-2apxzxb0r8-chhy2i-OPTIONS" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "chhy2i" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-projects/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["projects-POST"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "chhy2i" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "POST" -> null
      - id                      = "agi-2apxzxb0r8-chhy2i-POST" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "chhy2i" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-projects/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["reports-GET"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "wsnfk2" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "GET" -> null
      - id                      = "agi-2apxzxb0r8-wsnfk2-GET" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "wsnfk2" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-reports/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["reports-OPTIONS"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "wsnfk2" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "OPTIONS" -> null
      - id                      = "agi-2apxzxb0r8-wsnfk2-OPTIONS" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "wsnfk2" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-reports/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["users-DELETE"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "0dkbds" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "DELETE" -> null
      - id                      = "agi-2apxzxb0r8-0dkbds-DELETE" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "0dkbds" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-users/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["users-GET"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "0dkbds" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "GET" -> null
      - id                      = "agi-2apxzxb0r8-0dkbds-GET" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "0dkbds" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-users/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["users-OPTIONS"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "0dkbds" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "OPTIONS" -> null
      - id                      = "agi-2apxzxb0r8-0dkbds-OPTIONS" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "0dkbds" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-users/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["users-PATCH"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "0dkbds" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "PATCH" -> null
      - id                      = "agi-2apxzxb0r8-0dkbds-PATCH" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "0dkbds" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-users/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_integrations["users-POST"] will be destroyed
  # (because aws_api_gateway_integration.lambda_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "0dkbds" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "POST" -> null
      - id                      = "agi-2apxzxb0r8-0dkbds-POST" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "0dkbds" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-users/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_proxy_any["auth"] will be created
  + resource "aws_api_gateway_integration" "lambda_proxy_any" {
      + cache_namespace         = (known after apply)
      + connection_type         = "INTERNET"
      + http_method             = "ANY"
      + id                      = (known after apply)
      + integration_http_method = "POST"
      + passthrough_behavior    = (known after apply)
      + region                  = "us-east-2"
      + resource_id             = "srhf9j"
      + rest_api_id             = "2apxzxb0r8"
      + timeout_milliseconds    = 29000
      + type                    = "AWS_PROXY"
      + uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-auth/invocations"
    }

  # aws_api_gateway_integration.lambda_proxy_any["donors"] will be created
  + resource "aws_api_gateway_integration" "lambda_proxy_any" {
      + cache_namespace         = (known after apply)
      + connection_type         = "INTERNET"
      + http_method             = "ANY"
      + id                      = (known after apply)
      + integration_http_method = "POST"
      + passthrough_behavior    = (known after apply)
      + region                  = "us-east-2"
      + resource_id             = "xkazax"
      + rest_api_id             = "2apxzxb0r8"
      + timeout_milliseconds    = 29000
      + type                    = "AWS_PROXY"
      + uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-donors/invocations"
    }

  # aws_api_gateway_integration.lambda_proxy_any["expenditures"] will be created
  + resource "aws_api_gateway_integration" "lambda_proxy_any" {
      + cache_namespace         = (known after apply)
      + connection_type         = "INTERNET"
      + http_method             = "ANY"
      + id                      = (known after apply)
      + integration_http_method = "POST"
      + passthrough_behavior    = (known after apply)
      + region                  = "us-east-2"
      + resource_id             = "14khv0"
      + rest_api_id             = "2apxzxb0r8"
      + timeout_milliseconds    = 29000
      + type                    = "AWS_PROXY"
      + uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-expenditures/invocations"
    }

  # aws_api_gateway_integration.lambda_proxy_any["projects"] will be created
  + resource "aws_api_gateway_integration" "lambda_proxy_any" {
      + cache_namespace         = (known after apply)
      + connection_type         = "INTERNET"
      + http_method             = "ANY"
      + id                      = (known after apply)
      + integration_http_method = "POST"
      + passthrough_behavior    = (known after apply)
      + region                  = "us-east-2"
      + resource_id             = "kmwcxq"
      + rest_api_id             = "2apxzxb0r8"
      + timeout_milliseconds    = 29000
      + type                    = "AWS_PROXY"
      + uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-projects/invocations"
    }

  # aws_api_gateway_integration.lambda_proxy_any["reports"] will be created
  + resource "aws_api_gateway_integration" "lambda_proxy_any" {
      + cache_namespace         = (known after apply)
      + connection_type         = "INTERNET"
      + http_method             = "ANY"
      + id                      = (known after apply)
      + integration_http_method = "POST"
      + passthrough_behavior    = (known after apply)
      + region                  = "us-east-2"
      + resource_id             = "elsvn3"
      + rest_api_id             = "2apxzxb0r8"
      + timeout_milliseconds    = 29000
      + type                    = "AWS_PROXY"
      + uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-reports/invocations"
    }

  # aws_api_gateway_integration.lambda_proxy_any["users"] will be created
  + resource "aws_api_gateway_integration" "lambda_proxy_any" {
      + cache_namespace         = (known after apply)
      + connection_type         = "INTERNET"
      + http_method             = "ANY"
      + id                      = (known after apply)
      + integration_http_method = "POST"
      + passthrough_behavior    = (known after apply)
      + region                  = "us-east-2"
      + resource_id             = "4sjlu3"
      + rest_api_id             = "2apxzxb0r8"
      + timeout_milliseconds    = 29000
      + type                    = "AWS_PROXY"
      + uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-users/invocations"
    }

  # aws_api_gateway_integration.lambda_proxy_integrations["auth"] will be destroyed
  # (because aws_api_gateway_integration.lambda_proxy_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_proxy_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "srhf9j" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "ANY" -> null
      - id                      = "agi-2apxzxb0r8-srhf9j-ANY" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "srhf9j" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-auth/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_proxy_integrations["donors"] will be destroyed
  # (because aws_api_gateway_integration.lambda_proxy_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_proxy_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "xkazax" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "ANY" -> null
      - id                      = "agi-2apxzxb0r8-xkazax-ANY" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "xkazax" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-donors/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_proxy_integrations["expenditures"] will be destroyed
  # (because aws_api_gateway_integration.lambda_proxy_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_proxy_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "14khv0" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "ANY" -> null
      - id                      = "agi-2apxzxb0r8-14khv0-ANY" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "14khv0" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-expenditures/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_proxy_integrations["projects"] will be destroyed
  # (because aws_api_gateway_integration.lambda_proxy_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_proxy_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "kmwcxq" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "ANY" -> null
      - id                      = "agi-2apxzxb0r8-kmwcxq-ANY" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "kmwcxq" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-projects/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_proxy_integrations["reports"] will be destroyed
  # (because aws_api_gateway_integration.lambda_proxy_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_proxy_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "elsvn3" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "ANY" -> null
      - id                      = "agi-2apxzxb0r8-elsvn3-ANY" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "elsvn3" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-reports/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_proxy_integrations["users"] will be destroyed
  # (because aws_api_gateway_integration.lambda_proxy_integrations is not in configuration)
  - resource "aws_api_gateway_integration" "lambda_proxy_integrations" {
      - cache_key_parameters    = [] -> null
      - cache_namespace         = "4sjlu3" -> null
      - connection_type         = "INTERNET" -> null
      - http_method             = "ANY" -> null
      - id                      = "agi-2apxzxb0r8-4sjlu3-ANY" -> null
      - integration_http_method = "POST" -> null
      - passthrough_behavior    = "WHEN_NO_MATCH" -> null
      - region                  = "us-east-2" -> null
      - request_parameters      = {} -> null
      - request_templates       = {} -> null
      - resource_id             = "4sjlu3" -> null
      - rest_api_id             = "2apxzxb0r8" -> null
      - timeout_milliseconds    = 29000 -> null
      - type                    = "AWS_PROXY" -> null
      - uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-users/invocations" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_integration.lambda_root_any["auth"] will be created
  + resource "aws_api_gateway_integration" "lambda_root_any" {
      + cache_namespace         = (known after apply)
      + connection_type         = "INTERNET"
      + http_method             = "ANY"
      + id                      = (known after apply)
      + integration_http_method = "POST"
      + passthrough_behavior    = (known after apply)
      + region                  = "us-east-2"
      + resource_id             = "u8unad"
      + rest_api_id             = "2apxzxb0r8"
      + timeout_milliseconds    = 29000
      + type                    = "AWS_PROXY"
      + uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-auth/invocations"
    }

  # aws_api_gateway_integration.lambda_root_any["donors"] will be created
  + resource "aws_api_gateway_integration" "lambda_root_any" {
      + cache_namespace         = (known after apply)
      + connection_type         = "INTERNET"
      + http_method             = "ANY"
      + id                      = (known after apply)
      + integration_http_method = "POST"
      + passthrough_behavior    = (known after apply)
      + region                  = "us-east-2"
      + resource_id             = "hybur2"
      + rest_api_id             = "2apxzxb0r8"
      + timeout_milliseconds    = 29000
      + type                    = "AWS_PROXY"
      + uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-donors/invocations"
    }

  # aws_api_gateway_integration.lambda_root_any["expenditures"] will be created
  + resource "aws_api_gateway_integration" "lambda_root_any" {
      + cache_namespace         = (known after apply)
      + connection_type         = "INTERNET"
      + http_method             = "ANY"
      + id                      = (known after apply)
      + integration_http_method = "POST"
      + passthrough_behavior    = (known after apply)
      + region                  = "us-east-2"
      + resource_id             = "6sdj3w"
      + rest_api_id             = "2apxzxb0r8"
      + timeout_milliseconds    = 29000
      + type                    = "AWS_PROXY"
      + uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-expenditures/invocations"
    }

  # aws_api_gateway_integration.lambda_root_any["projects"] will be created
  + resource "aws_api_gateway_integration" "lambda_root_any" {
      + cache_namespace         = (known after apply)
      + connection_type         = "INTERNET"
      + http_method             = "ANY"
      + id                      = (known after apply)
      + integration_http_method = "POST"
      + passthrough_behavior    = (known after apply)
      + region                  = "us-east-2"
      + resource_id             = "chhy2i"
      + rest_api_id             = "2apxzxb0r8"
      + timeout_milliseconds    = 29000
      + type                    = "AWS_PROXY"
      + uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-projects/invocations"
    }

  # aws_api_gateway_integration.lambda_root_any["reports"] will be created
  + resource "aws_api_gateway_integration" "lambda_root_any" {
      + cache_namespace         = (known after apply)
      + connection_type         = "INTERNET"
      + http_method             = "ANY"
      + id                      = (known after apply)
      + integration_http_method = "POST"
      + passthrough_behavior    = (known after apply)
      + region                  = "us-east-2"
      + resource_id             = "wsnfk2"
      + rest_api_id             = "2apxzxb0r8"
      + timeout_milliseconds    = 29000
      + type                    = "AWS_PROXY"
      + uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-reports/invocations"
    }

  # aws_api_gateway_integration.lambda_root_any["users"] will be created
  + resource "aws_api_gateway_integration" "lambda_root_any" {
      + cache_namespace         = (known after apply)
      + connection_type         = "INTERNET"
      + http_method             = "ANY"
      + id                      = (known after apply)
      + integration_http_method = "POST"
      + passthrough_behavior    = (known after apply)
      + region                  = "us-east-2"
      + resource_id             = "0dkbds"
      + rest_api_id             = "2apxzxb0r8"
      + timeout_milliseconds    = 29000
      + type                    = "AWS_PROXY"
      + uri                     = "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:489881683177:function:branch-users/invocations"
    }

  # aws_api_gateway_method.lambda_methods["auth-GET"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "GET" -> null
      - id                   = "agm-2apxzxb0r8-u8unad-GET" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "u8unad" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["auth-OPTIONS"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "OPTIONS" -> null
      - id                   = "agm-2apxzxb0r8-u8unad-OPTIONS" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "u8unad" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["auth-POST"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "POST" -> null
      - id                   = "agm-2apxzxb0r8-u8unad-POST" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "u8unad" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["donors-GET"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "GET" -> null
      - id                   = "agm-2apxzxb0r8-hybur2-GET" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "hybur2" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["donors-OPTIONS"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "OPTIONS" -> null
      - id                   = "agm-2apxzxb0r8-hybur2-OPTIONS" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "hybur2" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["expenditures-GET"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "GET" -> null
      - id                   = "agm-2apxzxb0r8-6sdj3w-GET" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "6sdj3w" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["expenditures-OPTIONS"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "OPTIONS" -> null
      - id                   = "agm-2apxzxb0r8-6sdj3w-OPTIONS" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "6sdj3w" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["expenditures-POST"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "POST" -> null
      - id                   = "agm-2apxzxb0r8-6sdj3w-POST" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "6sdj3w" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["projects-GET"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "GET" -> null
      - id                   = "agm-2apxzxb0r8-chhy2i-GET" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "chhy2i" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["projects-OPTIONS"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "OPTIONS" -> null
      - id                   = "agm-2apxzxb0r8-chhy2i-OPTIONS" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "chhy2i" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["projects-POST"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "POST" -> null
      - id                   = "agm-2apxzxb0r8-chhy2i-POST" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "chhy2i" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["reports-GET"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "GET" -> null
      - id                   = "agm-2apxzxb0r8-wsnfk2-GET" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "wsnfk2" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["reports-OPTIONS"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "OPTIONS" -> null
      - id                   = "agm-2apxzxb0r8-wsnfk2-OPTIONS" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "wsnfk2" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["users-DELETE"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "DELETE" -> null
      - id                   = "agm-2apxzxb0r8-0dkbds-DELETE" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "0dkbds" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["users-GET"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "GET" -> null
      - id                   = "agm-2apxzxb0r8-0dkbds-GET" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "0dkbds" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["users-OPTIONS"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "OPTIONS" -> null
      - id                   = "agm-2apxzxb0r8-0dkbds-OPTIONS" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "0dkbds" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["users-PATCH"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "PATCH" -> null
      - id                   = "agm-2apxzxb0r8-0dkbds-PATCH" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "0dkbds" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_methods["users-POST"] will be destroyed
  # (because aws_api_gateway_method.lambda_methods is not in configuration)
  - resource "aws_api_gateway_method" "lambda_methods" {
      - api_key_required     = false -> null
      - authorization        = "NONE" -> null
      - authorization_scopes = [] -> null
      - http_method          = "POST" -> null
      - id                   = "agm-2apxzxb0r8-0dkbds-POST" -> null
      - region               = "us-east-2" -> null
      - request_models       = {} -> null
      - request_parameters   = {} -> null
      - resource_id          = "0dkbds" -> null
      - rest_api_id          = "2apxzxb0r8" -> null
        # (3 unchanged attributes hidden)
    }

  # aws_api_gateway_method.lambda_root_any["auth"] will be created
  + resource "aws_api_gateway_method" "lambda_root_any" {
      + api_key_required = false
      + authorization    = "NONE"
      + http_method      = "ANY"
      + id               = (known after apply)
      + region           = "us-east-2"
      + resource_id      = "u8unad"
      + rest_api_id      = "2apxzxb0r8"
    }

  # aws_api_gateway_method.lambda_root_any["donors"] will be created
  + resource "aws_api_gateway_method" "lambda_root_any" {
      + api_key_required = false
      + authorization    = "NONE"
      + http_method      = "ANY"
      + id               = (known after apply)
      + region           = "us-east-2"
      + resource_id      = "hybur2"
      + rest_api_id      = "2apxzxb0r8"
    }

  # aws_api_gateway_method.lambda_root_any["expenditures"] will be created
  + resource "aws_api_gateway_method" "lambda_root_any" {
      + api_key_required = false
      + authorization    = "NONE"
      + http_method      = "ANY"
      + id               = (known after apply)
      + region           = "us-east-2"
      + resource_id      = "6sdj3w"
      + rest_api_id      = "2apxzxb0r8"
    }

  # aws_api_gateway_method.lambda_root_any["projects"] will be created
  + resource "aws_api_gateway_method" "lambda_root_any" {
      + api_key_required = false
      + authorization    = "NONE"
      + http_method      = "ANY"
      + id               = (known after apply)
      + region           = "us-east-2"
      + resource_id      = "chhy2i"
      + rest_api_id      = "2apxzxb0r8"
    }

  # aws_api_gateway_method.lambda_root_any["reports"] will be created
  + resource "aws_api_gateway_method" "lambda_root_any" {
      + api_key_required = false
      + authorization    = "NONE"
      + http_method      = "ANY"
      + id               = (known after apply)
      + region           = "us-east-2"
      + resource_id      = "wsnfk2"
      + rest_api_id      = "2apxzxb0r8"
    }

  # aws_api_gateway_method.lambda_root_any["users"] will be created
  + resource "aws_api_gateway_method" "lambda_root_any" {
      + api_key_required = false
      + authorization    = "NONE"
      + http_method      = "ANY"
      + id               = (known after apply)
      + region           = "us-east-2"
      + resource_id      = "0dkbds"
      + rest_api_id      = "2apxzxb0r8"
    }

  # aws_api_gateway_stage.branch_stage will be updated in-place
  ~ resource "aws_api_gateway_stage" "branch_stage" {
      ~ deployment_id         = "q2mwqp" -> (known after apply)
        id                    = "ags-2apxzxb0r8-prod"
        tags                  = {}
        # (15 unchanged attributes hidden)
    }

Plan: 19 to add, 3 to change, 43 to destroy.

─────────────────────────────────────────────────────────────────────────────

Saved the plan to: tfplan

To perform exactly these actions, run the following command to apply:
    terraform apply "tfplan"

Pushed by: @nourshoreibah, Action: pull_request

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

🌿 Test environment updated in place ✅ — Click here to open. updated for 8b6a7d8 · logs

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

Labels

test-environment Creates a temporary (nearly free) test environment. Uses prod DB and cognito

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant