---
# System prepended metadata

title: Untitled

---

Request path
Graph SiteMiddleware >> Gateway >> Go monorepo >> requestSummary middleware >> scb >> resolution lib

Frontend Graph SiteMiddleware calls Gateway.

Gateway calls requestSummary:
https://github.com/99designs/gateway/blob/98ff6366af8b701d651fda031cc9230d67f1eb23/main.go#L64


requestSummary is in the Go monorepo middleware:
https://github.com/99designs/go/blob/546cbd20492a35dd698470927c93c9cd841280b7/requestsummary/middleware.go#L56-L73


requestSummary needs to have a new method MustGetSiteKey() added to the summary.
Calling this will return the siteKey


Calling MustGetSiteKey() will return a site key

MustGetSiteKey() makes a call to SCB and resolves the correct siteKey by looking at the domain


https://jspaint.app/#local:d9c8cef0656e7

To set the correct tenant and locale it will need to use Vista's resolution Libs
This is because of situations where we're NOT going through the design-services (frontend) app and don't have NextJs there to set the Tenant and Locale for us and then pass them in the header.

Also, traffic going through Bastion (rather than Gateway) might need to get Vista site config also. So the resolution needs to be in a shared place (SCB). For example if our 99designs.de/logo-design page wants to grab localised German Vista customer support numbers off the site config it can grab it.








- Release 13.8.0 scb version
- Bump request-summary go package in Bastion
- Bump shared-config in gateway
- Bump shared-




## Dev all-in

1. What we've been doing
2. Where we are at currently
3. Where we are going


### What we've been doing
Stargate have been working on localisation work to support dynamic data on the /design page.

Goal to be able to support all Vista locales and fetch localised products as 99designs locales don't overlap completely

-- Sites SCB

The goal is to continually evolve shared configuration bundle towards a consumer agnostic API and move site decisions to the perimeter services.

We've scoped the changes to just the go implementation of shared config as our perimeter services use the go package and the iam99 team done work to create ruby & php equivalent of request-suimmary


### Where we're currently at

We're getting ready to be able to swap out our hard-coded products and fetch them dynamically from the product catalog.

This will be initially just for the 99designs products and eventually include CARE products also.

We've decided on the contract to call Shared Config requiring a Tenant & locale in the header.

This might eventually become a query parameter and not stay that way forever.

But we can hide this decision making from the call sites.
Only Shared Config Bundle cares about this decision


### Where we're going

show slides






continue to evolve SCB towards consumer agnostic api - internal s aren't there yet
this is a poitn in time that works for use cases we have now but keep it

localisation working group eventually


maybe it could be a query parameter - just decided on header but it doesnt have to stay that way forwver
oh shit it should be a query param not header 
that ok doesnt change in gateway 
hide decision making from the call sites

only SCB cares about the decision 

test contract between request middleware and scb 
knowledge of the internals - maybe mock scb to return a panic. Don't need ton know under what cicumstances that happens

sometimes we get an answer and sometimes not lets mock it.



iam99 team done work to create rubty & php equivalent of request-suimmary
only go do getbyreqwuest
everytone else has to get thje site by request summary


ROLLOUT PLAN

- launch comms
- stagger by locale
- When happening
- behind feature flag
- Slowly pave over 

- no loading state rendered query world

- feature flag - bastion
- turnaround time - new to graph - data splitting vs CARE & 99 products

pitch rollout to eddy
prep qa doc - should look like lift and shift one
turnaround time NOW available in product catalog - that might change how we resolve data in graph.
