{
  "repo": "tidbcloud/grpc-metadb",
  "binary": "server",
  "binary_path": "cmd/server/main.go",
  "dependencies": {
    "HTTP GET /healthz": {
      "infrastructure": {},
      "services": []
    },
    "HTTP GET /api/v1/dataapps/test": {
      "infrastructure": {},
      "services": []
    },
    "HTTP GET /metrics": {
      "infrastructure": {
        "prometheus": {
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Expose Prometheus metrics on the sidecar metrics listener",
              "trigger": "Main starts the dedicated Gin engine on 0.0.0.0:9090",
              "implementation": "mEng.Any(\"/metrics\", prometheusHandler()) and mEng.Run(\"0.0.0.0:9090\")"
            }
          ]
        }
      },
      "services": []
    },
    "Runtime BackgroundWorkers.DynamoDBProbeLoop": {
      "infrastructure": {
        "aws_sts": {
          "conditions": [
            "Always after process startup"
          ],
          "operations": [
            {
              "operation": "Assume the hard-coded development DynamoDB access role",
              "trigger": "main launches ddb.DynamoDBV2Test(ctx) in a goroutine",
              "implementation": "getDynamodbV2ClientDev builds an STS client and calls stsClient.AssumeRole before creating the DynamoDB client"
            }
          ]
        },
        "aws_dynamodb": {
          "conditions": [
            "Always after the STS-based client is created"
          ],
          "operations": [
            {
              "operation": "List DynamoDB tables once per hour",
              "trigger": "Background goroutine enters the infinite DynamoDBV2Test loop",
              "implementation": "listTablesV2 calls client.ListTables(ctx, &dynamodb.ListTablesInput{}) and then sleeps for one hour"
            }
          ]
        },
        "jaeger": {
          "conditions": [
            "Always during startup"
          ],
          "operations": [
            {
              "operation": "Initialize Jaeger tracing for the process",
              "trigger": "main calls setup(ctx) before starting HTTP listeners",
              "implementation": "setup invokes titracing.InitJaeger(componentName)"
            }
          ]
        }
      },
      "services": []
    }
  }
}
