{
  "branches": [
    {
      "commitSha": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
      "createdAt": "2023-01-10T10:00:00Z",
      "id": 1,
      "name": "main",
      "protected": true,
      "repoId": 1,
      "updatedAt": "2024-12-10T20:00:00Z"
    },
    {
      "commitSha": "b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2",
      "createdAt": "2023-01-10T10:00:00Z",
      "id": 2,
      "name": "develop",
      "protected": true,
      "repoId": 1,
      "updatedAt": "2024-12-10T19:00:00Z"
    },
    {
      "commitSha": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3",
      "createdAt": "2024-12-08T10:00:00Z",
      "id": 3,
      "name": "release/v3.2.0",
      "protected": true,
      "repoId": 1,
      "updatedAt": "2024-12-10T15:00:00Z"
    },
    {
      "commitSha": "d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4",
      "createdAt": "2024-12-09T09:00:00Z",
      "id": 4,
      "name": "feature/rate-limiter-v2",
      "protected": false,
      "repoId": 1,
      "updatedAt": "2024-12-10T18:00:00Z"
    },
    {
      "commitSha": "e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5",
      "createdAt": "2024-12-10T14:00:00Z",
      "id": 5,
      "name": "hotfix/tls-cert-rotation",
      "protected": false,
      "repoId": 1,
      "updatedAt": "2024-12-10T16:00:00Z"
    }
  ],
  "checkRuns": [
    {
      "checkRunId": 7001,
      "completedAt": "2024-12-10T14:37:00Z",
      "conclusion": "success",
      "createdAt": "2024-12-10T14:35:30Z",
      "externalId": null,
      "id": 1,
      "name": "lint",
      "nodeId": "CR_kwDOCcr001",
      "output": {
        "summary": "golangci-lint passed with no issues",
        "text": null,
        "title": "Go Lint"
      },
      "repoId": 1,
      "sha": "e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5",
      "startedAt": "2024-12-10T14:35:30Z",
      "status": "completed",
      "updatedAt": "2024-12-10T14:37:00Z"
    },
    {
      "checkRunId": 7002,
      "completedAt": "2024-12-10T14:42:00Z",
      "conclusion": "success",
      "createdAt": "2024-12-10T14:35:30Z",
      "externalId": null,
      "id": 2,
      "name": "unit-test",
      "nodeId": "CR_kwDOCcr002",
      "output": {
        "summary": "128 tests passed, 0 failed, coverage 84.2%",
        "text": null,
        "title": "Unit Tests"
      },
      "repoId": 1,
      "sha": "e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5",
      "startedAt": "2024-12-10T14:35:30Z",
      "status": "completed",
      "updatedAt": "2024-12-10T14:42:00Z"
    },
    {
      "checkRunId": 7003,
      "completedAt": "2024-12-10T14:48:00Z",
      "conclusion": "success",
      "createdAt": "2024-12-10T14:35:30Z",
      "externalId": null,
      "id": 3,
      "name": "integration-test",
      "nodeId": "CR_kwDOCcr003",
      "output": {
        "summary": "42 integration tests passed",
        "text": null,
        "title": "Integration Tests"
      },
      "repoId": 1,
      "sha": "e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5",
      "startedAt": "2024-12-10T14:35:30Z",
      "status": "completed",
      "updatedAt": "2024-12-10T14:48:00Z"
    },
    {
      "checkRunId": 7004,
      "completedAt": "2024-12-10T14:40:00Z",
      "conclusion": "success",
      "createdAt": "2024-12-10T14:35:30Z",
      "externalId": null,
      "id": 4,
      "name": "docker-build",
      "nodeId": "CR_kwDOCcr004",
      "output": {
        "summary": "Image built: api-gateway:e5e5e5e (142MB)",
        "text": null,
        "title": "Docker Build"
      },
      "repoId": 1,
      "sha": "e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5",
      "startedAt": "2024-12-10T14:35:30Z",
      "status": "completed",
      "updatedAt": "2024-12-10T14:40:00Z"
    },
    {
      "checkRunId": 7005,
      "completedAt": "2024-12-10T18:37:00Z",
      "conclusion": "success",
      "createdAt": "2024-12-10T18:35:30Z",
      "externalId": null,
      "id": 5,
      "name": "lint",
      "nodeId": "CR_kwDOCcr005",
      "output": {
        "summary": "golangci-lint passed",
        "text": null,
        "title": "Go Lint"
      },
      "repoId": 1,
      "sha": "d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4",
      "startedAt": "2024-12-10T18:35:30Z",
      "status": "completed",
      "updatedAt": "2024-12-10T18:37:00Z"
    },
    {
      "checkRunId": 7006,
      "completedAt": "2024-12-10T18:43:00Z",
      "conclusion": "success",
      "createdAt": "2024-12-10T18:35:30Z",
      "externalId": null,
      "id": 6,
      "name": "unit-test",
      "nodeId": "CR_kwDOCcr006",
      "output": {
        "summary": "135 tests passed, 0 failed",
        "text": null,
        "title": "Unit Tests"
      },
      "repoId": 1,
      "sha": "d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4",
      "startedAt": "2024-12-10T18:35:30Z",
      "status": "completed",
      "updatedAt": "2024-12-10T18:43:00Z"
    },
    {
      "checkRunId": 7007,
      "completedAt": "2024-12-10T18:48:00Z",
      "conclusion": "failure",
      "createdAt": "2024-12-10T18:35:30Z",
      "externalId": null,
      "id": 7,
      "name": "integration-test",
      "nodeId": "CR_kwDOCcr007",
      "output": {
        "summary": "40 passed, 2 failed",
        "text": "FAIL TestRateLimiter_RedisBackend/distributed_counter\n  Error: dial tcp 127.0.0.1:6379: connect: connection refused\nFAIL TestRateLimiter_RedisBackend/token_bucket_refill\n  Error: context deadline exceeded after 30s",
        "title": "Integration Tests"
      },
      "repoId": 1,
      "sha": "d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4",
      "startedAt": "2024-12-10T18:35:30Z",
      "status": "completed",
      "updatedAt": "2024-12-10T18:48:00Z"
    },
    {
      "checkRunId": 7008,
      "completedAt": "2024-12-10T18:40:00Z",
      "conclusion": "success",
      "createdAt": "2024-12-10T18:35:30Z",
      "externalId": null,
      "id": 8,
      "name": "docker-build",
      "nodeId": "CR_kwDOCcr008",
      "output": {
        "summary": "Image built: api-gateway:d4d4d4d (148MB)",
        "text": null,
        "title": "Docker Build"
      },
      "repoId": 1,
      "sha": "d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4",
      "startedAt": "2024-12-10T18:35:30Z",
      "status": "completed",
      "updatedAt": "2024-12-10T18:40:00Z"
    },
    {
      "checkRunId": 7009,
      "completedAt": "2024-12-07T10:03:00Z",
      "conclusion": "success",
      "createdAt": "2024-12-07T10:01:00Z",
      "externalId": null,
      "id": 9,
      "name": "lint",
      "nodeId": "CR_kwDOCcr009",
      "output": {
        "summary": "golangci-lint passed",
        "text": null,
        "title": "Go Lint"
      },
      "repoId": 1,
      "sha": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
      "startedAt": "2024-12-07T10:01:00Z",
      "status": "completed",
      "updatedAt": "2024-12-07T10:03:00Z"
    },
    {
      "checkRunId": 7010,
      "completedAt": "2024-12-07T10:07:00Z",
      "conclusion": "success",
      "createdAt": "2024-12-07T10:01:00Z",
      "externalId": null,
      "id": 10,
      "name": "unit-test",
      "nodeId": "CR_kwDOCcr010",
      "output": {
        "summary": "126 tests passed, 0 failed, coverage 82.1%",
        "text": null,
        "title": "Unit Tests"
      },
      "repoId": 1,
      "sha": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
      "startedAt": "2024-12-07T10:01:00Z",
      "status": "completed",
      "updatedAt": "2024-12-07T10:07:00Z"
    },
    {
      "checkRunId": 7011,
      "completedAt": "2024-12-10T19:03:00Z",
      "conclusion": "success",
      "createdAt": "2024-12-10T19:01:00Z",
      "externalId": null,
      "id": 11,
      "name": "lint",
      "nodeId": "CR_kwDOCcr011",
      "output": {
        "summary": "golangci-lint passed",
        "text": null,
        "title": "Go Lint"
      },
      "repoId": 1,
      "sha": "b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2",
      "startedAt": "2024-12-10T19:01:00Z",
      "status": "completed",
      "updatedAt": "2024-12-10T19:03:00Z"
    },
    {
      "checkRunId": 7012,
      "completedAt": "2024-12-10T19:08:00Z",
      "conclusion": "success",
      "createdAt": "2024-12-10T19:01:00Z",
      "externalId": null,
      "id": 12,
      "name": "unit-test",
      "nodeId": "CR_kwDOCcr012",
      "output": {
        "summary": "132 tests passed, 0 failed",
        "text": null,
        "title": "Unit Tests"
      },
      "repoId": 1,
      "sha": "b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2",
      "startedAt": "2024-12-10T19:01:00Z",
      "status": "completed",
      "updatedAt": "2024-12-10T19:08:00Z"
    }
  ],
  "collaborators": [
    {
      "createdAt": "2023-01-10T10:00:00Z",
      "id": 1,
      "permission": "admin",
      "repoId": 1,
      "updatedAt": "2023-01-10T10:00:00Z",
      "userLogin": "platform-lead"
    },
    {
      "createdAt": "2023-01-10T10:00:00Z",
      "id": 2,
      "permission": "maintain",
      "repoId": 1,
      "updatedAt": "2023-01-10T10:00:00Z",
      "userLogin": "sre-maya"
    },
    {
      "createdAt": "2023-03-01T10:00:00Z",
      "id": 3,
      "permission": "push",
      "repoId": 1,
      "updatedAt": "2023-03-01T10:00:00Z",
      "userLogin": "backend-dev"
    },
    {
      "createdAt": "2023-01-10T10:00:00Z",
      "id": 4,
      "permission": "push",
      "repoId": 1,
      "updatedAt": "2023-01-10T10:00:00Z",
      "userLogin": "deploy-bot"
    }
  ],
  "comments": [
    {
      "authorAssociation": "MEMBER",
      "authorLogin": "sre-maya",
      "body": "I've traced this to the readiness probe configuration. The initial delay is too short for cold starts. Will push a fix in the deploy config.",
      "createdAt": "2024-12-09T10:00:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/issues/1#issuecomment-c001",
      "id": 1,
      "issueNumber": 1,
      "nodeId": "IC_kwDOCcmt01",
      "reactions": {
        "confused": 0,
        "eyes": 0,
        "heart": 0,
        "hooray": 0,
        "laugh": 0,
        "minusOne": 0,
        "plusOne": 1,
        "rocket": 0,
        "totalCount": 1
      },
      "repoId": 1,
      "updatedAt": "2024-12-09T10:00:00Z"
    },
    {
      "authorAssociation": "OWNER",
      "authorLogin": "platform-lead",
      "body": "LGTM on the approach. The dual-cert strategy should give us seamless rotation. Let's get this deployed to staging first.",
      "createdAt": "2024-12-10T15:00:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/pull/4#issuecomment-c002",
      "id": 2,
      "issueNumber": 4,
      "nodeId": "IC_kwDOCcmt02",
      "reactions": {
        "confused": 0,
        "eyes": 0,
        "heart": 0,
        "hooray": 0,
        "laugh": 0,
        "minusOne": 0,
        "plusOne": 0,
        "rocket": 0,
        "totalCount": 0
      },
      "repoId": 1,
      "updatedAt": "2024-12-10T15:00:00Z"
    }
  ],
  "commits": [
    {
      "authorEmail": "sample-user-1@example.test",
      "authorLogin": "platform-lead",
      "authorName": "Jordan Park",
      "branchName": "main",
      "committerEmail": "sample-user-5@example.test",
      "committerLogin": "web-flow",
      "committerName": "GitHub",
      "createdAt": "2024-12-07T10:00:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/commit/a1a1a1",
      "id": 1,
      "message": "chore: merge release/v3.1.0 to main",
      "nodeId": "C_kwDOCcom01",
      "parentShas": [],
      "repoId": 1,
      "sha": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
      "treeUrl": "https://api.github.com/repos/cloudship-io/api-gateway/git/trees/a1a1a1",
      "updatedAt": "2024-12-07T10:00:00Z",
      "verified": true
    },
    {
      "authorEmail": "sample-user-3@example.test",
      "authorLogin": "backend-dev",
      "authorName": "Liam Torres",
      "branchName": "develop",
      "committerEmail": "sample-user-3@example.test",
      "committerLogin": "backend-dev",
      "committerName": "Liam Torres",
      "createdAt": "2024-12-10T19:00:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/commit/b2b2b2",
      "id": 2,
      "message": "feat: add circuit breaker to upstream proxy",
      "nodeId": "C_kwDOCcom02",
      "parentShas": [
        "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1"
      ],
      "repoId": 1,
      "sha": "b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2",
      "treeUrl": "https://api.github.com/repos/cloudship-io/api-gateway/git/trees/b2b2b2",
      "updatedAt": "2024-12-10T19:00:00Z",
      "verified": false
    },
    {
      "authorEmail": "sample-user-2@example.test",
      "authorLogin": "sre-maya",
      "authorName": "Maya Okonkwo",
      "branchName": "release/v3.2.0",
      "committerEmail": "sample-user-2@example.test",
      "committerLogin": "sre-maya",
      "committerName": "Maya Okonkwo",
      "createdAt": "2024-12-10T15:00:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/commit/c3c3c3",
      "id": 3,
      "message": "chore: bump version to 3.2.0-rc1",
      "nodeId": "C_kwDOCcom03",
      "parentShas": [
        "b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2"
      ],
      "repoId": 1,
      "sha": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3",
      "treeUrl": "https://api.github.com/repos/cloudship-io/api-gateway/git/trees/c3c3c3",
      "updatedAt": "2024-12-10T15:00:00Z",
      "verified": false
    },
    {
      "authorEmail": "sample-user-3@example.test",
      "authorLogin": "backend-dev",
      "authorName": "Liam Torres",
      "branchName": "feature/rate-limiter-v2",
      "committerEmail": "sample-user-3@example.test",
      "committerLogin": "backend-dev",
      "committerName": "Liam Torres",
      "createdAt": "2024-12-10T18:00:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/commit/d4d4d4",
      "id": 4,
      "message": "feat: implement token bucket rate limiter with Redis backend",
      "nodeId": "C_kwDOCcom04",
      "parentShas": [
        "b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2"
      ],
      "repoId": 1,
      "sha": "d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4",
      "treeUrl": "https://api.github.com/repos/cloudship-io/api-gateway/git/trees/d4d4d4",
      "updatedAt": "2024-12-10T18:00:00Z",
      "verified": false
    },
    {
      "authorEmail": "sample-user-2@example.test",
      "authorLogin": "sre-maya",
      "authorName": "Maya Okonkwo",
      "branchName": "hotfix/tls-cert-rotation",
      "committerEmail": "sample-user-2@example.test",
      "committerLogin": "sre-maya",
      "committerName": "Maya Okonkwo",
      "createdAt": "2024-12-10T16:00:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/commit/e5e5e5",
      "id": 5,
      "message": "fix: rotate TLS certificates before expiry",
      "nodeId": "C_kwDOCcom05",
      "parentShas": [
        "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1"
      ],
      "repoId": 1,
      "sha": "e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5",
      "treeUrl": "https://api.github.com/repos/cloudship-io/api-gateway/git/trees/e5e5e5",
      "updatedAt": "2024-12-10T16:00:00Z",
      "verified": true
    },
    {
      "authorEmail": "sample-user-2@example.test",
      "authorLogin": "sre-maya",
      "authorName": "Maya Okonkwo",
      "branchName": "main",
      "committerEmail": "sample-user-2@example.test",
      "committerLogin": "sre-maya",
      "committerName": "Maya Okonkwo",
      "createdAt": "2024-12-05T10:00:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/commit/f6f6f6",
      "id": 6,
      "message": "fix: patch CVE-2024-51234 in HTTP parser",
      "nodeId": "C_kwDOCcom06",
      "parentShas": [
        "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1"
      ],
      "repoId": 1,
      "sha": "f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6",
      "treeUrl": "https://api.github.com/repos/cloudship-io/api-gateway/git/trees/f6f6f6",
      "updatedAt": "2024-12-05T10:00:00Z",
      "verified": true
    }
  ],
  "commitStatuses": [
    {
      "context": "ci/build",
      "createdAt": "2024-12-07T10:08:00Z",
      "creatorLogin": "deploy-bot",
      "description": "All checks passed",
      "id": 1,
      "nodeId": "CS_kwDOCcs001",
      "repoId": 1,
      "sha": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
      "state": "success",
      "statusId": 6001,
      "targetUrl": "https://ci.cloudship.io/builds/v3.1.0",
      "updatedAt": "2024-12-07T10:08:00Z"
    },
    {
      "context": "security/snyk",
      "createdAt": "2024-12-07T10:09:00Z",
      "creatorLogin": "deploy-bot",
      "description": "No known vulnerabilities",
      "id": 2,
      "nodeId": "CS_kwDOCcs002",
      "repoId": 1,
      "sha": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
      "state": "success",
      "statusId": 6002,
      "targetUrl": "https://snyk.io/test/github/cloudship-io/api-gateway",
      "updatedAt": "2024-12-07T10:09:00Z"
    },
    {
      "context": "ci/build",
      "createdAt": "2024-12-10T14:48:00Z",
      "creatorLogin": "deploy-bot",
      "description": "All checks passed",
      "id": 3,
      "nodeId": "CS_kwDOCcs003",
      "repoId": 1,
      "sha": "e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5",
      "state": "success",
      "statusId": 6003,
      "targetUrl": "https://ci.cloudship.io/builds/tls-fix",
      "updatedAt": "2024-12-10T14:48:00Z"
    },
    {
      "context": "ci/integration-test",
      "createdAt": "2024-12-10T18:48:00Z",
      "creatorLogin": "deploy-bot",
      "description": "Integration test failed: Redis connection timeout",
      "id": 4,
      "nodeId": "CS_kwDOCcs004",
      "repoId": 1,
      "sha": "d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4",
      "state": "failure",
      "statusId": 6004,
      "targetUrl": "https://ci.cloudship.io/builds/rate-limiter",
      "updatedAt": "2024-12-10T18:48:00Z"
    },
    {
      "context": "ci/unit-test",
      "createdAt": "2024-12-10T18:42:00Z",
      "creatorLogin": "deploy-bot",
      "description": "Unit tests passed",
      "id": 5,
      "nodeId": "CS_kwDOCcs005",
      "repoId": 1,
      "sha": "d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4",
      "state": "success",
      "statusId": 6005,
      "targetUrl": "https://ci.cloudship.io/builds/rate-limiter-unit",
      "updatedAt": "2024-12-10T18:42:00Z"
    },
    {
      "context": "ci/build",
      "createdAt": "2024-12-10T15:08:00Z",
      "creatorLogin": "deploy-bot",
      "description": "All checks passed",
      "id": 6,
      "nodeId": "CS_kwDOCcs006",
      "repoId": 1,
      "sha": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3",
      "state": "success",
      "statusId": 6006,
      "targetUrl": "https://ci.cloudship.io/builds/v3.2.0-rc1",
      "updatedAt": "2024-12-10T15:08:00Z"
    },
    {
      "context": "ci/coverage",
      "createdAt": "2024-12-10T19:15:00Z",
      "creatorLogin": "deploy-bot",
      "description": "Coverage report generating",
      "id": 7,
      "nodeId": "CS_kwDOCcs007",
      "repoId": 1,
      "sha": "b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2",
      "state": "pending",
      "statusId": 6007,
      "targetUrl": "https://ci.cloudship.io/builds/develop-latest",
      "updatedAt": "2024-12-10T19:15:00Z"
    }
  ],
  "deployments": [
    {
      "createdAt": "2024-12-07T10:15:00Z",
      "creatorLogin": "deploy-bot",
      "deploymentId": 3001,
      "description": "Production deploy api-gateway@3.1.0 linked to INC-2027-014",
      "environment": "production",
      "id": 1,
      "nodeId": "DE_kwDOCdep01",
      "productionEnvironment": true,
      "ref": "main",
      "repoId": 1,
      "sha": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
      "task": "deploy",
      "transientEnvironment": false,
      "updatedAt": "2024-12-07T10:30:00Z"
    },
    {
      "createdAt": "2024-12-10T19:10:00Z",
      "creatorLogin": "deploy-bot",
      "deploymentId": 3002,
      "description": "Staging auto-deploy from develop",
      "environment": "staging",
      "id": 2,
      "nodeId": "DE_kwDOCdep02",
      "productionEnvironment": false,
      "ref": "develop",
      "repoId": 1,
      "sha": "b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2",
      "task": "deploy",
      "transientEnvironment": false,
      "updatedAt": "2024-12-10T19:20:00Z"
    },
    {
      "createdAt": "2024-12-10T15:10:00Z",
      "creatorLogin": "sre-maya",
      "deploymentId": 3003,
      "description": "Staging deploy for v3.2.0-rc1 validation",
      "environment": "staging",
      "id": 3,
      "nodeId": "DE_kwDOCdep03",
      "productionEnvironment": false,
      "ref": "release/v3.2.0",
      "repoId": 1,
      "sha": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3",
      "task": "deploy",
      "transientEnvironment": false,
      "updatedAt": "2024-12-10T15:25:00Z"
    },
    {
      "createdAt": "2024-12-10T18:40:00Z",
      "creatorLogin": "deploy-bot",
      "deploymentId": 3004,
      "description": "Preview environment for rate limiter PR",
      "environment": "preview",
      "id": 4,
      "nodeId": "DE_kwDOCdep04",
      "productionEnvironment": false,
      "ref": "feature/rate-limiter-v2",
      "repoId": 1,
      "sha": "d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4",
      "task": "deploy",
      "transientEnvironment": true,
      "updatedAt": "2024-12-10T18:55:00Z"
    },
    {
      "createdAt": "2024-12-10T14:55:00Z",
      "creatorLogin": "deploy-bot",
      "deploymentId": 3005,
      "description": "Preview environment for TLS hotfix",
      "environment": "preview",
      "id": 5,
      "nodeId": "DE_kwDOCdep05",
      "productionEnvironment": false,
      "ref": "hotfix/tls-cert-rotation",
      "repoId": 1,
      "sha": "e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5",
      "task": "deploy",
      "transientEnvironment": true,
      "updatedAt": "2024-12-10T15:05:00Z"
    },
    {
      "createdAt": "2024-12-05T10:30:00Z",
      "creatorLogin": "sre-maya",
      "deploymentId": 3006,
      "description": "Emergency patch deploy for CVE-2024-51234",
      "environment": "production",
      "id": 6,
      "nodeId": "DE_kwDOCdep06",
      "productionEnvironment": true,
      "ref": "main",
      "repoId": 1,
      "sha": "f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6",
      "task": "deploy",
      "transientEnvironment": false,
      "updatedAt": "2024-12-05T10:50:00Z"
    },
    {
      "createdAt": "2024-12-07T10:12:00Z",
      "creatorLogin": "deploy-bot",
      "deploymentId": 3007,
      "description": "Canary deployment for v3.1.0 (10% traffic)",
      "environment": "canary",
      "id": 7,
      "nodeId": "DE_kwDOCdep07",
      "productionEnvironment": true,
      "ref": "main",
      "repoId": 1,
      "sha": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
      "task": "deploy",
      "transientEnvironment": false,
      "updatedAt": "2024-12-07T10:25:00Z"
    }
  ],
  "deploymentStatuses": [
    {
      "createdAt": "2024-12-07T10:30:00Z",
      "creatorLogin": "deploy-bot",
      "deploymentId": 3001,
      "description": "Production deployment completed",
      "environmentUrl": "https://api.cloudship.io",
      "id": 1,
      "logUrl": "https://github.com/cloudship-io/api-gateway/actions/runs/3/logs",
      "nodeId": "DS_kwDOCds001",
      "repoId": 1,
      "state": "success",
      "statusId": 4001,
      "updatedAt": "2024-12-07T10:30:00Z"
    },
    {
      "createdAt": "2024-12-07T10:15:00Z",
      "creatorLogin": "deploy-bot",
      "deploymentId": 3001,
      "description": "Deploying to production...",
      "environmentUrl": null,
      "id": 2,
      "logUrl": "https://github.com/cloudship-io/api-gateway/actions/runs/3/logs",
      "nodeId": "DS_kwDOCds002",
      "repoId": 1,
      "state": "in_progress",
      "statusId": 4002,
      "updatedAt": "2024-12-07T10:15:00Z"
    },
    {
      "createdAt": "2024-12-10T19:20:00Z",
      "creatorLogin": "deploy-bot",
      "deploymentId": 3002,
      "description": "Staging deployment completed",
      "environmentUrl": "https://staging-api.cloudship.io",
      "id": 3,
      "logUrl": "https://github.com/cloudship-io/api-gateway/actions/runs/2/logs",
      "nodeId": "DS_kwDOCds003",
      "repoId": 1,
      "state": "success",
      "statusId": 4003,
      "updatedAt": "2024-12-10T19:20:00Z"
    },
    {
      "createdAt": "2024-12-10T15:25:00Z",
      "creatorLogin": "deploy-bot",
      "deploymentId": 3003,
      "description": "Staging RC deployment completed",
      "environmentUrl": "https://staging-api.cloudship.io",
      "id": 4,
      "logUrl": null,
      "nodeId": "DS_kwDOCds004",
      "repoId": 1,
      "state": "success",
      "statusId": 4004,
      "updatedAt": "2024-12-10T15:25:00Z"
    },
    {
      "createdAt": "2024-12-10T18:55:00Z",
      "creatorLogin": "deploy-bot",
      "deploymentId": 3004,
      "description": "Preview environment ready",
      "environmentUrl": "https://pr-5--api-gateway.preview.cloudship.io",
      "id": 5,
      "logUrl": null,
      "nodeId": "DS_kwDOCds005",
      "repoId": 1,
      "state": "success",
      "statusId": 4005,
      "updatedAt": "2024-12-10T18:55:00Z"
    },
    {
      "createdAt": "2024-12-10T15:05:00Z",
      "creatorLogin": "deploy-bot",
      "deploymentId": 3005,
      "description": "Preview environment ready",
      "environmentUrl": "https://pr-4--api-gateway.preview.cloudship.io",
      "id": 6,
      "logUrl": null,
      "nodeId": "DS_kwDOCds006",
      "repoId": 1,
      "state": "success",
      "statusId": 4006,
      "updatedAt": "2024-12-10T15:05:00Z"
    },
    {
      "createdAt": "2024-12-05T10:50:00Z",
      "creatorLogin": "sre-maya",
      "deploymentId": 3006,
      "description": "Emergency patch deployed",
      "environmentUrl": "https://api.cloudship.io",
      "id": 7,
      "logUrl": null,
      "nodeId": "DS_kwDOCds007",
      "repoId": 1,
      "state": "success",
      "statusId": 4007,
      "updatedAt": "2024-12-05T10:50:00Z"
    },
    {
      "createdAt": "2024-12-07T10:25:00Z",
      "creatorLogin": "deploy-bot",
      "deploymentId": 3007,
      "description": "Canary deployment healthy, promoting to full rollout",
      "environmentUrl": "https://canary-api.cloudship.io",
      "id": 8,
      "logUrl": null,
      "nodeId": "DS_kwDOCds008",
      "repoId": 1,
      "state": "success",
      "statusId": 4008,
      "updatedAt": "2024-12-07T10:25:00Z"
    },
    {
      "createdAt": "2024-12-07T10:12:00Z",
      "creatorLogin": "deploy-bot",
      "deploymentId": 3007,
      "description": "Canary deployment started, routing 10% traffic",
      "environmentUrl": null,
      "id": 9,
      "logUrl": null,
      "nodeId": "DS_kwDOCds009",
      "repoId": 1,
      "state": "in_progress",
      "statusId": 4009,
      "updatedAt": "2024-12-07T10:12:00Z"
    }
  ],
  "discussionCategories": [],
  "discussionComments": [],
  "discussions": [],
  "environments": [
    {
      "createdAt": "2023-01-15T10:00:00Z",
      "deploymentBranchPolicy": {
        "customBranchPolicies": false,
        "protectedBranches": true
      },
      "environmentId": 5001,
      "id": 1,
      "name": "production",
      "nodeId": "EN_kwDOCenv01",
      "protectionRules": [
        {
          "reviewers": [
            {
              "id": 1,
              "type": "User"
            },
            {
              "id": 2,
              "type": "User"
            }
          ],
          "type": "required_reviewers"
        },
        {
          "type": "wait_timer",
          "waitTimer": 10
        },
        {
          "type": "branch_policy"
        }
      ],
      "repoId": 1,
      "updatedAt": "2024-06-01T10:00:00Z"
    },
    {
      "createdAt": "2023-01-15T10:00:00Z",
      "deploymentBranchPolicy": {
        "customBranchPolicies": false,
        "protectedBranches": true
      },
      "environmentId": 5002,
      "id": 2,
      "name": "staging",
      "nodeId": "EN_kwDOCenv02",
      "protectionRules": [
        {
          "reviewers": [
            {
              "id": 2,
              "type": "User"
            }
          ],
          "type": "required_reviewers"
        }
      ],
      "repoId": 1,
      "updatedAt": "2024-06-01T10:00:00Z"
    },
    {
      "createdAt": "2023-06-01T10:00:00Z",
      "deploymentBranchPolicy": {
        "customBranchPolicies": false,
        "protectedBranches": true
      },
      "environmentId": 5003,
      "id": 3,
      "name": "canary",
      "nodeId": "EN_kwDOCenv03",
      "protectionRules": [
        {
          "type": "wait_timer",
          "waitTimer": 5
        }
      ],
      "repoId": 1,
      "updatedAt": "2024-06-01T10:00:00Z"
    },
    {
      "createdAt": "2023-06-01T10:00:00Z",
      "deploymentBranchPolicy": null,
      "environmentId": 5004,
      "id": 4,
      "name": "preview",
      "nodeId": "EN_kwDOCenv04",
      "protectionRules": [],
      "repoId": 1,
      "updatedAt": "2024-06-01T10:00:00Z"
    }
  ],
  "files": [
    {
      "branchName": "main",
      "content": "# API Gateway\n\nCloudShip API gateway service with automated CI/CD pipeline.\n\n## Architecture\n\n- Go 1.22 HTTP reverse proxy\n- Kubernetes deployment with canary strategy\n- Redis for distributed rate limiting\n- mTLS service mesh integration\n\n## Deployment\n\nAll deployments are automated via GitHub Actions.\n\n- `main` -> production (requires approval)\n- `develop` -> staging (auto-deploy)\n- Feature branches -> preview environments\n",
      "createdAt": "2023-01-10T10:00:00Z",
      "encoding": "utf-8",
      "id": 1,
      "path": "README.md",
      "repoId": 1,
      "sha": "aa11bb22cc33dd44ee55ff66778899001122aabb",
      "size": 420,
      "type": "file",
      "updatedAt": "2024-12-01T10:00:00Z"
    },
    {
      "branchName": "main",
      "content": "name: CI\non: [push, pull_request]\njobs:\n  lint:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: golangci/golangci-lint-action@v3\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: actions/setup-go@v5\n        with: { go-version: '1.22' }\n      - run: go test ./...\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - run: docker build -t api-gateway .\n",
      "createdAt": "2023-01-10T10:00:00Z",
      "encoding": "utf-8",
      "id": 2,
      "path": ".github/workflows/ci.yml",
      "repoId": 1,
      "sha": "bb22cc33dd44ee55ff667788990011223344aabb",
      "size": 460,
      "type": "file",
      "updatedAt": "2024-11-01T10:00:00Z"
    },
    {
      "branchName": "main",
      "content": "name: Deploy\non:\n  push:\n    branches: [main, develop]\njobs:\n  deploy-staging:\n    if: github.ref == 'refs/heads/develop'\n    environment: staging\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - run: ./scripts/deploy.sh staging\n  deploy-production:\n    if: github.ref == 'refs/heads/main'\n    environment: production\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - run: ./scripts/deploy.sh production\n",
      "createdAt": "2023-02-01T10:00:00Z",
      "encoding": "utf-8",
      "id": 3,
      "path": ".github/workflows/deploy.yml",
      "repoId": 1,
      "sha": "cc33dd44ee55ff6677889900112233445566aabb",
      "size": 480,
      "type": "file",
      "updatedAt": "2024-11-15T10:00:00Z"
    }
  ],
  "gists": [],
  "gitCommits": [],
  "gitTrees": [],
  "issues": [
    {
      "assignees": [
        "sre-maya"
      ],
      "authorLogin": "sre-maya",
      "body": "The canary deployment to us-east-1 fails roughly 30% of the time with a health check timeout. The pod starts but takes too long to pass readiness probes.\n\nPossible causes:\n- Cold start latency in the new Go runtime\n- EKS node pool auto-scaling lag\n- DNS resolution delay for service mesh",
      "closedAt": null,
      "closedBy": null,
      "createdAt": "2024-12-08T09:00:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/issues/1",
      "id": 1,
      "isPullRequest": false,
      "labels": [
        "bug",
        "infrastructure"
      ],
      "locked": false,
      "milestone": null,
      "nodeId": "I_kwDOCiss01",
      "number": 1,
      "reactions": {
        "confused": 1,
        "eyes": 0,
        "heart": 0,
        "hooray": 0,
        "laugh": 0,
        "minusOne": 0,
        "plusOne": 2,
        "rocket": 0,
        "totalCount": 3
      },
      "repoId": 1,
      "state": "open",
      "stateReason": null,
      "title": "Canary deployment fails intermittently on us-east-1",
      "updatedAt": "2024-12-10T14:00:00Z"
    },
    {
      "assignees": [
        "sre-maya"
      ],
      "authorLogin": "platform-lead",
      "body": "api-gateway@3.1.0 caused webhook delivery bursts after provider throttling. Roll back safely and add idempotency regression coverage.",
      "closedAt": null,
      "closedBy": null,
      "createdAt": "2024-12-10T11:00:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/issues/2",
      "id": 2,
      "isPullRequest": false,
      "labels": [
        "bug",
        "incident",
        "webhooks"
      ],
      "locked": false,
      "milestone": null,
      "nodeId": "I_kwDOCiss02",
      "number": 2,
      "reactions": {
        "confused": 0,
        "eyes": 0,
        "heart": 0,
        "hooray": 0,
        "laugh": 0,
        "minusOne": 0,
        "plusOne": 2,
        "rocket": 0,
        "totalCount": 2
      },
      "repoId": 1,
      "state": "open",
      "stateReason": null,
      "title": "INC-2027-014: webhook retries ignore provider Retry-After",
      "updatedAt": "2024-12-10T16:00:00Z"
    },
    {
      "assignees": [
        "platform-lead"
      ],
      "authorLogin": "platform-lead",
      "body": "We need an automated rollback mechanism that triggers when post-deploy health checks fail for more than 60 seconds.",
      "closedAt": null,
      "closedBy": null,
      "createdAt": "2024-12-06T10:00:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/issues/3",
      "id": 3,
      "isPullRequest": false,
      "labels": [
        "enhancement",
        "ci/cd"
      ],
      "locked": false,
      "milestone": null,
      "nodeId": "I_kwDOCiss03",
      "number": 3,
      "reactions": {
        "confused": 0,
        "eyes": 0,
        "heart": 0,
        "hooray": 0,
        "laugh": 0,
        "minusOne": 0,
        "plusOne": 3,
        "rocket": 1,
        "totalCount": 4
      },
      "repoId": 1,
      "state": "open",
      "stateReason": null,
      "title": "Add deployment rollback trigger via GitHub Actions",
      "updatedAt": "2024-12-09T10:00:00Z"
    },
    {
      "assignees": [
        "sre-maya"
      ],
      "authorLogin": "sre-maya",
      "body": null,
      "closedAt": null,
      "closedBy": null,
      "createdAt": "2024-12-10T14:30:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/pull/4",
      "id": 4,
      "isPullRequest": true,
      "labels": [
        "security"
      ],
      "locked": false,
      "milestone": null,
      "nodeId": "I_kwDOCiss04",
      "number": 4,
      "reactions": {
        "confused": 0,
        "eyes": 0,
        "heart": 0,
        "hooray": 0,
        "laugh": 0,
        "minusOne": 0,
        "plusOne": 0,
        "rocket": 0,
        "totalCount": 0
      },
      "repoId": 1,
      "state": "open",
      "stateReason": null,
      "title": "Hotfix: TLS cert rotation",
      "updatedAt": "2024-12-10T16:00:00Z"
    },
    {
      "assignees": [
        "backend-dev"
      ],
      "authorLogin": "backend-dev",
      "body": null,
      "closedAt": null,
      "closedBy": null,
      "createdAt": "2024-12-10T18:30:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/pull/5",
      "id": 5,
      "isPullRequest": true,
      "labels": [
        "enhancement"
      ],
      "locked": false,
      "milestone": null,
      "nodeId": "I_kwDOCiss05",
      "number": 5,
      "reactions": {
        "confused": 0,
        "eyes": 0,
        "heart": 0,
        "hooray": 0,
        "laugh": 0,
        "minusOne": 0,
        "plusOne": 0,
        "rocket": 0,
        "totalCount": 0
      },
      "repoId": 1,
      "state": "open",
      "stateReason": null,
      "title": "Rate limiter v2 with Redis backend",
      "updatedAt": "2024-12-10T18:30:00Z"
    }
  ],
  "labels": [
    {
      "color": "d73a4a",
      "createdAt": "2023-01-10T10:00:00Z",
      "description": "Something isn't working",
      "id": 1,
      "isDefault": true,
      "name": "bug",
      "nodeId": "LA_kwDOClab01",
      "repoId": 1,
      "updatedAt": "2023-01-10T10:00:00Z"
    },
    {
      "color": "0075ca",
      "createdAt": "2023-01-15T10:00:00Z",
      "description": "CI/CD pipeline changes",
      "id": 2,
      "isDefault": false,
      "name": "ci/cd",
      "nodeId": "LA_kwDOClab02",
      "repoId": 1,
      "updatedAt": "2023-01-15T10:00:00Z"
    },
    {
      "color": "006b75",
      "createdAt": "2023-01-15T10:00:00Z",
      "description": "Infrastructure and deployment",
      "id": 3,
      "isDefault": false,
      "name": "infrastructure",
      "nodeId": "LA_kwDOClab03",
      "repoId": 1,
      "updatedAt": "2023-01-15T10:00:00Z"
    },
    {
      "color": "b60205",
      "createdAt": "2023-01-15T10:00:00Z",
      "description": "Security related",
      "id": 4,
      "isDefault": false,
      "name": "security",
      "nodeId": "LA_kwDOClab04",
      "repoId": 1,
      "updatedAt": "2023-01-15T10:00:00Z"
    },
    {
      "color": "a2eeef",
      "createdAt": "2023-01-10T10:00:00Z",
      "description": "New feature or request",
      "id": 5,
      "isDefault": true,
      "name": "enhancement",
      "nodeId": "LA_kwDOClab05",
      "repoId": 1,
      "updatedAt": "2023-01-10T10:00:00Z"
    }
  ],
  "milestones": [
    {
      "closedAt": "2024-12-07T10:30:00Z",
      "createdAt": "2024-11-01T10:00:00Z",
      "creatorLogin": "platform-lead",
      "description": "Circuit breaker, HTTP/3 support, observability improvements",
      "dueOn": "2024-12-07T23:59:59Z",
      "id": 1,
      "milestoneId": 801,
      "nodeId": "MI_kwDOCmi001",
      "number": 1,
      "repoId": 1,
      "state": "closed",
      "title": "v3.1.0",
      "updatedAt": "2024-12-07T10:30:00Z"
    },
    {
      "closedAt": null,
      "createdAt": "2024-12-01T10:00:00Z",
      "creatorLogin": "platform-lead",
      "description": "Redis rate limiter, cert rotation, deployment rollback automation",
      "dueOn": "2025-01-10T23:59:59Z",
      "id": 2,
      "milestoneId": 802,
      "nodeId": "MI_kwDOCmi002",
      "number": 2,
      "repoId": 1,
      "state": "open",
      "title": "v3.2.0",
      "updatedAt": "2024-12-10T18:00:00Z"
    }
  ],
  "notifications": [
    {
      "createdAt": "2024-12-10T14:30:00Z",
      "id": 1,
      "lastReadAt": null,
      "nodeId": "NT_kwDOCnot01",
      "reason": "review_requested",
      "repoId": 1,
      "subjectTitle": "Hotfix: TLS cert rotation with zero-downtime",
      "subjectType": "PullRequest",
      "subjectUrl": "https://api.github.com/repos/cloudship-io/api-gateway/pulls/4",
      "subscriberLogin": "platform-lead",
      "unread": true,
      "updatedAt": "2024-12-10T16:00:00Z"
    },
    {
      "createdAt": "2024-12-10T18:30:00Z",
      "id": 2,
      "lastReadAt": null,
      "nodeId": "NT_kwDOCnot02",
      "reason": "review_requested",
      "repoId": 1,
      "subjectTitle": "Rate limiter v2 with Redis backend",
      "subjectType": "PullRequest",
      "subjectUrl": "https://api.github.com/repos/cloudship-io/api-gateway/pulls/5",
      "subscriberLogin": "platform-lead",
      "unread": true,
      "updatedAt": "2024-12-10T18:30:00Z"
    },
    {
      "createdAt": "2024-12-07T10:30:00Z",
      "id": 3,
      "lastReadAt": "2024-12-07T11:00:00Z",
      "nodeId": "NT_kwDOCnot03",
      "reason": "subscribed",
      "repoId": 1,
      "subjectTitle": "API Gateway v3.1.0",
      "subjectType": "Release",
      "subjectUrl": null,
      "subscriberLogin": "backend-dev",
      "unread": false,
      "updatedAt": "2024-12-07T10:30:00Z"
    }
  ],
  "organizations": [],
  "projectsV2": [],
  "pullRequests": [
    {
      "additions": 180,
      "assignees": [
        "sre-maya"
      ],
      "authorLogin": "sre-maya",
      "autoMerge": null,
      "baseRef": "main",
      "baseSha": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
      "body": "Fixes INC-2027-014 by honoring provider Retry-After, bounding retry concurrency, and asserting one downstream write per delivery key.",
      "changedFiles": 6,
      "closedAt": null,
      "comments": 1,
      "commits": 1,
      "createdAt": "2024-12-10T14:30:00Z",
      "deletions": 45,
      "diffUrl": "https://github.com/archal-labs/api-gateway/pull/4.diff",
      "draft": false,
      "headRef": "hotfix/tls-cert-rotation",
      "headSha": "e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5",
      "htmlUrl": "https://github.com/archal-labs/api-gateway/pull/4",
      "id": 1,
      "labels": [
        "incident",
        "webhooks",
        "release-blocker"
      ],
      "locked": false,
      "maintainerCanModify": true,
      "mergeable": true,
      "mergeCommitSha": null,
      "merged": false,
      "mergedAt": null,
      "mergedBy": null,
      "milestone": null,
      "nodeId": "PR_kwDOCpr001",
      "number": 4,
      "patchUrl": "https://github.com/archal-labs/api-gateway/pull/4.patch",
      "repoId": 1,
      "requestedReviewers": [
        "platform-lead"
      ],
      "reviewComments": 0,
      "state": "open",
      "title": "Honor Retry-After and preserve webhook idempotency",
      "updatedAt": "2024-12-10T16:00:00Z"
    },
    {
      "additions": 520,
      "assignees": [
        "backend-dev"
      ],
      "authorLogin": "backend-dev",
      "autoMerge": null,
      "baseRef": "develop",
      "baseSha": "b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2",
      "body": "## Summary\n\nReplaces the in-memory rate limiter with a Redis-backed token bucket implementation for distributed rate limiting across multiple pods.\n\n## Changes\n- Token bucket algorithm with configurable burst size\n- Redis Lua scripts for atomic operations\n- Per-route and per-client rate limit configuration\n- Metrics emission for rate limit events\n\nRelated: #3",
      "changedFiles": 14,
      "closedAt": null,
      "comments": 0,
      "commits": 3,
      "createdAt": "2024-12-10T18:30:00Z",
      "deletions": 120,
      "diffUrl": "https://github.com/cloudship-io/api-gateway/pull/5.diff",
      "draft": false,
      "headRef": "feature/rate-limiter-v2",
      "headSha": "d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/pull/5",
      "id": 2,
      "labels": [
        "enhancement"
      ],
      "locked": false,
      "maintainerCanModify": true,
      "mergeable": true,
      "mergeCommitSha": null,
      "merged": false,
      "mergedAt": null,
      "mergedBy": null,
      "milestone": null,
      "nodeId": "PR_kwDOCpr002",
      "number": 5,
      "patchUrl": "https://github.com/cloudship-io/api-gateway/pull/5.patch",
      "repoId": 1,
      "requestedReviewers": [
        "platform-lead",
        "sre-maya"
      ],
      "reviewComments": 0,
      "state": "open",
      "title": "Rate limiter v2 with Redis backend",
      "updatedAt": "2024-12-10T18:30:00Z"
    }
  ],
  "releases": [
    {
      "authorLogin": "platform-lead",
      "body": "## Major Release\n\n- Complete rewrite in Go 1.22\n- Kubernetes-native deployment\n- mTLS service mesh integration\n- OpenTelemetry tracing",
      "createdAt": "2024-10-01T10:00:00Z",
      "draft": false,
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/releases/tag/v3.0.0",
      "id": 1,
      "name": "API Gateway v3.0.0",
      "nodeId": "RE_kwDOCrel01",
      "prerelease": false,
      "repoId": 1,
      "tagName": "v3.0.0",
      "tarballUrl": "https://api.github.com/repos/cloudship-io/api-gateway/tarball/v3.0.0",
      "targetCommitish": "main",
      "updatedAt": "2024-10-01T10:00:00Z",
      "zipballUrl": "https://api.github.com/repos/cloudship-io/api-gateway/zipball/v3.0.0"
    },
    {
      "authorLogin": "platform-lead",
      "body": "Provider retry-policy release associated with INC-2027-014; production was rolled back to v3.0.4.",
      "createdAt": "2024-12-07T10:30:00Z",
      "draft": false,
      "htmlUrl": "https://github.com/archal-labs/api-gateway/releases/tag/v3.1.0",
      "id": 2,
      "name": "api-gateway@3.1.0",
      "nodeId": "RE_kwDOCrel02",
      "prerelease": false,
      "repoId": 1,
      "tagName": "v3.1.0",
      "tarballUrl": "https://api.github.com/repos/cloudship-io/api-gateway/tarball/v3.1.0",
      "targetCommitish": "main",
      "updatedAt": "2024-12-07T10:30:00Z",
      "zipballUrl": "https://api.github.com/repos/cloudship-io/api-gateway/zipball/v3.1.0"
    },
    {
      "authorLogin": "sre-maya",
      "body": "## Release Candidate\n\n- Redis-backed distributed rate limiting (WIP)\n- Zero-downtime TLS rotation (WIP)\n- Automated deployment rollback\n\n**Pre-release: Do not use in production.**",
      "createdAt": "2024-12-10T15:00:00Z",
      "draft": false,
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/releases/tag/v3.2.0-rc1",
      "id": 3,
      "name": "API Gateway v3.2.0-rc1",
      "nodeId": "RE_kwDOCrel03",
      "prerelease": true,
      "repoId": 1,
      "tagName": "v3.2.0-rc1",
      "tarballUrl": "https://api.github.com/repos/cloudship-io/api-gateway/tarball/v3.2.0-rc1",
      "targetCommitish": "release/v3.2.0",
      "updatedAt": "2024-12-10T15:00:00Z",
      "zipballUrl": "https://api.github.com/repos/cloudship-io/api-gateway/zipball/v3.2.0-rc1"
    }
  ],
  "repos": [
    {
      "allowAutoMerge": true,
      "allowMergeCommit": false,
      "allowRebaseMerge": false,
      "allowSquashMerge": true,
      "archived": false,
      "cloneUrl": "https://github.com/archal-labs/api-gateway.git",
      "createdAt": "2023-01-10T10:00:00Z",
      "defaultBranch": "main",
      "deleteBranchOnMerge": true,
      "description": "Archal Labs API gateway and provider-delivery runtime",
      "disabled": false,
      "fork": false,
      "forksCount": 1,
      "fullName": "archal-labs/api-gateway",
      "hasIssues": true,
      "hasPages": false,
      "hasProjects": true,
      "hasWiki": false,
      "htmlUrl": "https://github.com/archal-labs/api-gateway",
      "id": 1,
      "language": "Go",
      "license": "UNLICENSED",
      "name": "api-gateway",
      "nodeId": "R_kgDOCapi01",
      "openIssuesCount": 5,
      "owner": "archal-labs",
      "private": true,
      "pushedAt": "2024-12-10T20:00:00Z",
      "sourceRepoId": null,
      "sshUrl": "sample-user-4@example.test:archal-labs/api-gateway.git",
      "stargazersCount": 18,
      "topics": [
        "api-gateway",
        "go",
        "kubernetes",
        "ci-cd"
      ],
      "updatedAt": "2024-12-10T20:00:00Z",
      "visibility": "private",
      "watchersCount": 18
    }
  ],
  "starredRepos": [],
  "tags": [
    {
      "commitSha": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
      "createdAt": "2024-10-01T10:00:00Z",
      "id": 1,
      "name": "v3.0.0",
      "nodeId": "TG_kwDOCtag01",
      "repoId": 1,
      "tarballUrl": "https://api.github.com/repos/cloudship-io/api-gateway/tarball/v3.0.0",
      "updatedAt": "2024-10-01T10:00:00Z",
      "zipballUrl": "https://api.github.com/repos/cloudship-io/api-gateway/zipball/v3.0.0"
    },
    {
      "commitSha": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
      "createdAt": "2024-12-07T10:30:00Z",
      "id": 2,
      "name": "v3.1.0",
      "nodeId": "TG_kwDOCtag02",
      "repoId": 1,
      "tarballUrl": "https://api.github.com/repos/cloudship-io/api-gateway/tarball/v3.1.0",
      "updatedAt": "2024-12-07T10:30:00Z",
      "zipballUrl": "https://api.github.com/repos/cloudship-io/api-gateway/zipball/v3.1.0"
    },
    {
      "commitSha": "c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3",
      "createdAt": "2024-12-10T15:00:00Z",
      "id": 3,
      "name": "v3.2.0-rc1",
      "nodeId": "TG_kwDOCtag03",
      "repoId": 1,
      "tarballUrl": "https://api.github.com/repos/cloudship-io/api-gateway/tarball/v3.2.0-rc1",
      "updatedAt": "2024-12-10T15:00:00Z",
      "zipballUrl": "https://api.github.com/repos/cloudship-io/api-gateway/zipball/v3.2.0-rc1"
    }
  ],
  "teamMembers": [],
  "teams": [],
  "users": [
    {
      "avatarUrl": "https://avatars.githubusercontent.com/u/5001?v=4",
      "bio": "Platform engineering lead at CloudShip",
      "company": "@cloudship-io",
      "createdAt": "2018-05-10T08:00:00Z",
      "email": "sample-user-1@example.test",
      "followers": 280,
      "following": 18,
      "htmlUrl": "https://github.com/platform-lead",
      "id": 1,
      "location": "Seattle, WA",
      "login": "platform-lead",
      "name": "Jordan Park",
      "nodeId": "U_kgDOCplat1",
      "publicRepos": 22,
      "siteAdmin": false,
      "type": "User",
      "updatedAt": "2024-12-10T10:00:00Z"
    },
    {
      "avatarUrl": "https://avatars.githubusercontent.com/u/5002?v=4",
      "bio": "Site reliability engineer",
      "company": "@cloudship-io",
      "createdAt": "2019-08-20T12:00:00Z",
      "email": "sample-user-2@example.test",
      "followers": 95,
      "following": 32,
      "htmlUrl": "https://github.com/sre-maya",
      "id": 2,
      "location": "Portland, OR",
      "login": "sre-maya",
      "name": "Maya Okonkwo",
      "nodeId": "U_kgDOCsrem2",
      "publicRepos": 14,
      "siteAdmin": false,
      "type": "User",
      "updatedAt": "2024-12-10T14:00:00Z"
    },
    {
      "avatarUrl": "https://avatars.githubusercontent.com/u/5003?v=4",
      "bio": "Backend developer",
      "company": "@cloudship-io",
      "createdAt": "2021-02-14T10:00:00Z",
      "email": "sample-user-3@example.test",
      "followers": 42,
      "following": 15,
      "htmlUrl": "https://github.com/backend-dev",
      "id": 3,
      "location": "Denver, CO",
      "login": "backend-dev",
      "name": "Liam Torres",
      "nodeId": "U_kgDOCback3",
      "publicRepos": 9,
      "siteAdmin": false,
      "type": "User",
      "updatedAt": "2024-12-09T16:00:00Z"
    },
    {
      "avatarUrl": "https://avatars.githubusercontent.com/u/5004?v=4",
      "bio": null,
      "company": null,
      "createdAt": "2022-01-01T00:00:00Z",
      "email": null,
      "followers": 0,
      "following": 0,
      "htmlUrl": "https://github.com/deploy-bot",
      "id": 4,
      "location": null,
      "login": "deploy-bot",
      "name": "Deploy Bot",
      "nodeId": "U_kgDOCdbot4",
      "publicRepos": 0,
      "siteAdmin": false,
      "type": "Bot",
      "updatedAt": "2024-12-10T00:00:00Z"
    }
  ],
  "webhooks": [
    {
      "active": true,
      "config": {
        "contentType": "json",
        "insecureSsl": "0",
        "secret": "sample-redacted-0a4713ccef70",
        "url": "https://ci.cloudship.io/hooks/github"
      },
      "createdAt": "2023-01-15T10:00:00Z",
      "events": [
        "push",
        "pull_request",
        "pull_request_review"
      ],
      "id": 1,
      "nodeId": "WH_kwDOCwh001",
      "repoId": 1,
      "updatedAt": "2024-06-01T10:00:00Z",
      "webhookId": 9001
    },
    {
      "active": true,
      "config": {
        "contentType": "json",
        "insecureSsl": "0",
        "secret": "sample-redacted-4a29e4172428",
        "url": "https://deploy.cloudship.io/hooks/github"
      },
      "createdAt": "2023-02-01T10:00:00Z",
      "events": [
        "deployment",
        "deployment_status",
        "check_run",
        "check_suite"
      ],
      "id": 2,
      "nodeId": "WH_kwDOCwh002",
      "repoId": 1,
      "updatedAt": "2024-06-01T10:00:00Z",
      "webhookId": 9002
    },
    {
      "active": true,
      "config": {
        "contentType": "json",
        "insecureSsl": "0",
        "secret": "sample-redacted-cf46cc9ed4c1",
        "url": "https://pagerduty.com/hooks/cloudship-api-gw"
      },
      "createdAt": "2023-06-01T10:00:00Z",
      "events": [
        "deployment_status"
      ],
      "id": 3,
      "nodeId": "WH_kwDOCwh003",
      "repoId": 1,
      "updatedAt": "2024-06-01T10:00:00Z",
      "webhookId": 9003
    },
    {
      "active": true,
      "config": {
        "contentType": "json",
        "insecureSsl": "0",
        "url": "https://slack.com/hooks/cloudship-deploys"
      },
      "createdAt": "2023-01-20T10:00:00Z",
      "events": [
        "push",
        "deployment",
        "deployment_status",
        "release"
      ],
      "id": 4,
      "nodeId": "WH_kwDOCwh004",
      "repoId": 1,
      "updatedAt": "2024-06-01T10:00:00Z",
      "webhookId": 9004
    },
    {
      "active": true,
      "config": {
        "contentType": "json",
        "insecureSsl": "0",
        "secret": "sample-redacted-13848f26d91e",
        "url": "https://argocd.cloudship.io/api/webhook"
      },
      "createdAt": "2024-03-01T10:00:00Z",
      "events": [
        "push"
      ],
      "id": 5,
      "nodeId": "WH_kwDOCwh005",
      "repoId": 1,
      "updatedAt": "2024-06-01T10:00:00Z",
      "webhookId": 9005
    }
  ],
  "workflowRuns": [
    {
      "conclusion": "success",
      "createdAt": "2024-12-10T14:35:00Z",
      "event": "pull_request",
      "headBranch": "hotfix/tls-cert-rotation",
      "headSha": "e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/actions/runs/1",
      "id": 1,
      "name": "CI",
      "nodeId": "WR_kwDOCwr001",
      "repoId": 1,
      "runAttempt": 1,
      "runNumber": 892,
      "runStartedAt": "2024-12-10T14:35:00Z",
      "status": "completed",
      "triggeringActorLogin": "sre-maya",
      "updatedAt": "2024-12-10T14:50:00Z",
      "workflowId": 1
    },
    {
      "conclusion": "success",
      "createdAt": "2024-12-10T19:05:00Z",
      "event": "push",
      "headBranch": "develop",
      "headSha": "b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/actions/runs/2",
      "id": 2,
      "name": "Deploy",
      "nodeId": "WR_kwDOCwr002",
      "repoId": 1,
      "runAttempt": 1,
      "runNumber": 341,
      "runStartedAt": "2024-12-10T19:05:00Z",
      "status": "completed",
      "triggeringActorLogin": "backend-dev",
      "updatedAt": "2024-12-10T19:20:00Z",
      "workflowId": 2
    },
    {
      "conclusion": "success",
      "createdAt": "2024-12-07T10:10:00Z",
      "event": "push",
      "headBranch": "main",
      "headSha": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/actions/runs/3",
      "id": 3,
      "name": "Deploy",
      "nodeId": "WR_kwDOCwr003",
      "repoId": 1,
      "runAttempt": 1,
      "runNumber": 340,
      "runStartedAt": "2024-12-07T10:10:00Z",
      "status": "completed",
      "triggeringActorLogin": "platform-lead",
      "updatedAt": "2024-12-07T10:30:00Z",
      "workflowId": 2
    },
    {
      "conclusion": "failure",
      "createdAt": "2024-12-10T18:35:00Z",
      "event": "pull_request",
      "headBranch": "feature/rate-limiter-v2",
      "headSha": "d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/actions/runs/4",
      "id": 4,
      "name": "CI",
      "nodeId": "WR_kwDOCwr004",
      "repoId": 1,
      "runAttempt": 1,
      "runNumber": 893,
      "runStartedAt": "2024-12-10T18:35:00Z",
      "status": "completed",
      "triggeringActorLogin": "backend-dev",
      "updatedAt": "2024-12-10T18:50:00Z",
      "workflowId": 1
    },
    {
      "conclusion": "success",
      "createdAt": "2024-12-10T02:00:00Z",
      "event": "schedule",
      "headBranch": "main",
      "headSha": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/actions/runs/5",
      "id": 5,
      "name": "Security Scan",
      "nodeId": "WR_kwDOCwr005",
      "repoId": 1,
      "runAttempt": 1,
      "runNumber": 156,
      "runStartedAt": "2024-12-10T02:00:00Z",
      "status": "completed",
      "triggeringActorLogin": "deploy-bot",
      "updatedAt": "2024-12-10T02:15:00Z",
      "workflowId": 3
    },
    {
      "conclusion": "success",
      "createdAt": "2024-12-10T03:00:00Z",
      "event": "schedule",
      "headBranch": "main",
      "headSha": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/actions/runs/6",
      "id": 6,
      "name": "Nightly Integration Tests",
      "nodeId": "WR_kwDOCwr006",
      "repoId": 1,
      "runAttempt": 1,
      "runNumber": 89,
      "runStartedAt": "2024-12-10T03:00:00Z",
      "status": "completed",
      "triggeringActorLogin": "deploy-bot",
      "updatedAt": "2024-12-10T03:45:00Z",
      "workflowId": 4
    }
  ],
  "workflows": [
    {
      "badgeUrl": "https://github.com/cloudship-io/api-gateway/workflows/CI/badge.svg",
      "createdAt": "2023-01-10T10:00:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/actions/workflows/ci.yml",
      "id": 1,
      "name": "CI",
      "nodeId": "W_kwDOCwf001",
      "path": ".github/workflows/ci.yml",
      "repoId": 1,
      "state": "active",
      "updatedAt": "2024-06-01T10:00:00Z"
    },
    {
      "badgeUrl": "https://github.com/cloudship-io/api-gateway/workflows/Deploy/badge.svg",
      "createdAt": "2023-02-01T10:00:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/actions/workflows/deploy.yml",
      "id": 2,
      "name": "Deploy",
      "nodeId": "W_kwDOCwf002",
      "path": ".github/workflows/deploy.yml",
      "repoId": 1,
      "state": "active",
      "updatedAt": "2024-06-01T10:00:00Z"
    },
    {
      "badgeUrl": "https://github.com/cloudship-io/api-gateway/workflows/Security/badge.svg",
      "createdAt": "2023-03-01T10:00:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/actions/workflows/security.yml",
      "id": 3,
      "name": "Security Scan",
      "nodeId": "W_kwDOCwf003",
      "path": ".github/workflows/security.yml",
      "repoId": 1,
      "state": "active",
      "updatedAt": "2024-06-01T10:00:00Z"
    },
    {
      "badgeUrl": "https://github.com/cloudship-io/api-gateway/workflows/Nightly/badge.svg",
      "createdAt": "2023-06-01T10:00:00Z",
      "htmlUrl": "https://github.com/cloudship-io/api-gateway/actions/workflows/nightly.yml",
      "id": 4,
      "name": "Nightly Integration Tests",
      "nodeId": "W_kwDOCwf004",
      "path": ".github/workflows/nightly.yml",
      "repoId": 1,
      "state": "active",
      "updatedAt": "2024-06-01T10:00:00Z"
    }
  ]
}
