{
  "info": {
    "_postman_id": "themisure-integration-api-collection",
    "name": "Themisure Integration API",
    "description": "The Themisure battery-intelligence integration (data-plane) API. Set the {{baseUrl}} and {{apiKey}} collection variables, then run any request. Generated from the same OpenAPI operations that drive the SDKs and the hosted reference; do not edit by hand. Session-only endpoints (fleet, usage, certificate management) are marked and cannot be called with an API key.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://gateway.themisure.com",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "Public",
      "item": [
        {
          "name": "GET /v1/status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/status",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "status"
              ]
            },
            "description": "The public rollup of the gateway's internal uptime probes: per-component state, rolling uptime, latency, and the labeled availability objective. Unauthenticated; rate-limited per client IP. The uptime figures are computed from real probes, and a brand-new deploy reports an honest 'no data yet' rather than a fabricated 100 percent.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": []
        },
        {
          "name": "GET /v1/healthz",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/healthz",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "healthz"
              ]
            },
            "description": "The public liveness probe. Reports that the gateway process is up without checking dependencies. Also served at /healthz for orchestrators.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": []
        },
        {
          "name": "GET /v1/certificates/{token}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/certificates/:token",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "certificates",
                ":token"
              ],
              "variable": [
                {
                  "key": "token",
                  "value": "ABCDE12345FGHIJ67890K",
                  "description": "The certificate's public verification token."
                }
              ]
            },
            "description": "The public, unauthenticated certificate verification. Looks a certificate up by its unguessable token alone and returns only the frozen public snapshot plus the computed status and timestamps, never any issuer-internal identifier. An unknown token is a uniform 404. The token's 256-bit entropy is the control; the endpoint is rate-limited per client IP as a modest anti-scraping guard.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Portfolio",
      "item": [
        {
          "name": "GET /v1/portfolio/summary",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/portfolio/summary",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio",
                "summary"
              ]
            },
            "description": "Aggregate statistics for the caller's book. Only the book tiers (LENDER, INSURER, PLATFORM) have a book; the OWNER tier is structurally barred. Scoped to the caller's tenant."
          },
          "response": []
        },
        {
          "name": "GET /v1/portfolio/packs",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/portfolio/packs?limit=&cursor=&segment=&chemistry=&sort=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio",
                "packs"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "description": "Page size (keyset limit).",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "description": "The keyset cursor from a prior page's nextCursor.",
                  "disabled": true
                },
                {
                  "key": "segment",
                  "value": "",
                  "description": "Filter by vehicle segment.",
                  "disabled": true
                },
                {
                  "key": "chemistry",
                  "value": "",
                  "description": "Filter by cell chemistry.",
                  "disabled": true
                },
                {
                  "key": "sort",
                  "value": "",
                  "description": "Sort key for the page.",
                  "disabled": true
                }
              ]
            },
            "description": "The paginated, filterable, sortable compact pack list for the caller's book, using keyset (cursor) pagination. Book-tier gated and tenant-scoped."
          },
          "response": []
        },
        {
          "name": "GET /v1/portfolio/residual",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/portfolio/residual",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio",
                "residual"
              ]
            },
            "description": "The book-level residual-value exposure roll-up: total residual exposure over time and by segment, aggregated from the latest stored score of every pack in the book (no re-scoring). Book-tier gated and tenant-scoped."
          },
          "response": []
        },
        {
          "name": "GET /v1/portfolio/abs-tape",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/portfolio/abs-tape?format=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio",
                "abs-tape"
              ],
              "query": [
                {
                  "key": "format",
                  "value": "",
                  "description": "zip (default, the streamed download) or summary (the JSON pool roll-up).",
                  "disabled": true
                }
              ]
            },
            "description": "The battery-aware ABS / securitization data tape: a streamed zip attachment carrying the per-pack battery-collateral enrichment rows (battery-data-tape.csv), the pool roll-up (pool-summary.json), and a manifest (MANIFEST.txt) with the as-of, model versions, scope note, methodology pointer, and a per-file sha256. The tape supplies only battery columns; the issuer supplies the loan and borrower columns and joins by pack id / VIN. It is battery enrichment, not a credit tape and not a rating. With ?format=summary it returns the pool roll-up as JSON instead of the zip. Book-tier gated and tenant-scoped."
          },
          "response": []
        },
        {
          "name": "GET /v1/portfolio/abs-tape/summary",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/portfolio/abs-tape/summary",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "portfolio",
                "abs-tape",
                "summary"
              ]
            },
            "description": "The battery-aware ABS data tape pool roll-up plus provenance, as JSON, so a client can render the headline stats without downloading the zip. The rows array is empty (the per-pack rows are the zip export's CSV only). Battery enrichment only, not a credit tape and not a rating. Book-tier gated and tenant-scoped."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Packs",
      "item": [
        {
          "name": "GET /v1/packs/{packId}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/packs/:packId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "packs",
                ":packId"
              ],
              "variable": [
                {
                  "key": "packId",
                  "value": "ABCDE12345FGHIJ67890K",
                  "description": "The 21-character Battery Pack Aadhaar id of the pack."
                }
              ]
            },
            "description": "The full lifecycle record for a stored pack: identity, latest score, residuals, flags, and the consent grants visible to the caller. Per-pack access applies: a pack outside the caller's entitled set is a 404, and a non-owner needs an active consent grant carrying read:record."
          },
          "response": []
        },
        {
          "name": "GET /v1/packs/{packId}/score",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/packs/:packId/score",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "packs",
                ":packId",
                "score"
              ],
              "variable": [
                {
                  "key": "packId",
                  "value": "ABCDE12345FGHIJ67890K",
                  "description": "The 21-character Battery Pack Aadhaar id of the pack."
                }
              ]
            },
            "description": "Only the latest score for a pack: the SoH band, reason codes, and the insurance-risk and health-grade lenses. Per-pack access with the read:score scope applies. A pack with no score is a 404."
          },
          "response": []
        },
        {
          "name": "GET /v1/packs/{packId}/decision",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/packs/:packId/decision?tenureMonths=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "packs",
                ":packId",
                "decision"
              ],
              "query": [
                {
                  "key": "tenureMonths",
                  "value": "",
                  "description": "The loan tenure in months to project the residual at (defaults to the nearest stored horizon).",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "packId",
                  "value": "ABCDE12345FGHIJ67890K",
                  "description": "The 21-character Battery Pack Aadhaar id of the pack."
                }
              ]
            },
            "description": "The origination-style decision projection for a stored pack at a selectable tenure: the residual at the nearest stored horizon, the latest score, the flags, and the gateway-derived LTV uplift with its full assumptions basis. A pure read; nothing is scored. Book-tier gated (the OWNER tier is barred) plus per-pack access."
          },
          "response": []
        },
        {
          "name": "GET /v1/packs/{packId}/consents",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/packs/:packId/consents",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "packs",
                ":packId",
                "consents"
              ],
              "variable": [
                {
                  "key": "packId",
                  "value": "ABCDE12345FGHIJ67890K",
                  "description": "The 21-character Battery Pack Aadhaar id of the pack."
                }
              ]
            },
            "description": "The consent grants on a pack visible to the caller: an owner sees every grant on its own pack; a book tier sees only grants made to its own tier. Per-pack access with read:record applies."
          },
          "response": []
        },
        {
          "name": "POST /v1/packs/{packId}/rescore",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "",
                "description": "An idempotency key. A repeated re-score with the same key and body replays the stored record instead of producing a new score; a different body with the same key is a 409.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/packs/:packId/rescore",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "packs",
                ":packId",
                "rescore"
              ],
              "variable": [
                {
                  "key": "packId",
                  "value": "ABCDE12345FGHIJ67890K",
                  "description": "The 21-character Battery Pack Aadhaar id of the pack."
                }
              ]
            },
            "description": "Triggers a fresh score for a stored pack and returns the updated lifecycle record. Requires the rescore scope on the matching consent grant in addition to tier entitlement. Idempotent under an Idempotency-Key header, and concurrent re-scores of the same pack are serialized. Book-tier gated (the OWNER tier is barred). A re-score consumes one billable score against the tier quota.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"Periodic revaluation\"\n}\n",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Decisions",
      "item": [
        {
          "name": "POST /v1/decisions:lookup",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/decisions:lookup",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "decisions:lookup"
              ]
            },
            "description": "Computes a decision view for an ad-hoc pack supplied inline (identity plus observations) at an optional tenure. Forwards the inline data to the scoring engine and shapes the result into a decision view. Nothing is persisted. Only the book tiers may call this; the OWNER tier is barred.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"tenureMonths\": 36,\n  \"identity\": {\n    \"packId\": \"ABCDE12345FGHIJ67890K\",\n    \"chemistry\": \"LFP\",\n    \"segment\": \"3W\",\n    \"ratedCapacityKwh\": 7.5\n  },\n  \"observations\": [\n    {\n      \"months\": 18,\n      \"equivalentFullCycles\": 640,\n      \"meanDod\": 0.72,\n      \"fastChargeFraction\": 0.35,\n      \"resistanceProxyOhm\": 0.021,\n      \"resistanceRatio\": 1.18,\n      \"coulombicEfficiency\": 0.992,\n      \"meanPackTempC\": 33.5\n    }\n  ]\n}\n",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Applications",
      "item": [
        {
          "name": "POST /v1/applications",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/applications",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "applications"
              ]
            },
            "description": "Submits an inbound loan application to the autonomous underwriter engine, persists the returned decision run against the caller's tenant, and returns the run's full decision trace (the rendered decision, the grounds it cites, and the replayable record). Book-tier gated; a scoped agent token is refused.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"applicationId\": \"app_example_0001\",\n  \"product\": \"ev_loan\",\n  \"applicant\": {\n    \"applicantId\": \"applicant_0001\",\n    \"displayName\": \"Example Applicant\",\n    \"state\": \"KA\"\n  },\n  \"requestedAmount\": 120000,\n  \"requestedTermMonths\": 36,\n  \"collateral\": {\n    \"kind\": \"ev_battery\",\n    \"descriptor\": \"3W LFP pack, 7.5 kWh\",\n    \"statedValue\": 90000\n  },\n  \"documents\": [\n    {\n      \"documentId\": \"doc_0001\",\n      \"kind\": \"id_document\",\n      \"filename\": \"id.pdf\",\n      \"received\": true\n    }\n  ],\n  \"status\": \"received\",\n  \"submittedAt\": \"2026-06-01T00:00:00Z\"\n}\n",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /v1/applications:batch",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/applications:batch",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "applications:batch"
              ]
            },
            "description": "Bulk application intake: a book of applications, each decided through the same path the single submit takes and persisted under the caller's tenant, with per-record {applicationId, error} failures rather than a batch-wide failure. Book-tier gated, agent-refused, and rate-limited per org.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"applications\": [\n    {\n      \"applicationId\": \"app_example_0001\",\n      \"product\": \"ev_loan\",\n      \"applicant\": {\n        \"applicantId\": \"applicant_0001\",\n        \"displayName\": \"Example Applicant\",\n        \"state\": \"KA\"\n      },\n      \"requestedAmount\": 120000,\n      \"requestedTermMonths\": 36,\n      \"collateral\": {\n        \"kind\": \"ev_battery\",\n        \"descriptor\": \"3W LFP pack, 7.5 kWh\",\n        \"statedValue\": 90000\n      },\n      \"documents\": [\n        {\n          \"documentId\": \"doc_0001\",\n          \"kind\": \"id_document\",\n          \"filename\": \"id.pdf\",\n          \"received\": true\n        }\n      ],\n      \"status\": \"received\",\n      \"submittedAt\": \"2026-06-01T00:00:00Z\"\n    }\n  ]\n}\n",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /v1/application-batch-jobs",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/application-batch-jobs",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "application-batch-jobs"
              ]
            },
            "description": "The ASYNC scale path beyond the synchronous, 500-capped batch: submit a larger book (up to 10000 applications) for background decisioning. Accepts a JSON body ({applications: [...]}) or a raw CSV body (Content-Type text/csv) with the flat columns applicationId, product, applicantId, displayName, state, requestedAmount, requestedTermMonths, status, submittedAt. Returns 202 with the created job id and a status URL to poll; each row is decided asynchronously through the SAME decision path the sync batch uses. Book-tier gated, agent-refused, and rate-limited per org."
          },
          "response": []
        },
        {
          "name": "GET /v1/application-batch-jobs/{id}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/application-batch-jobs/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "application-batch-jobs",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "example_id",
                  "description": "The batch job id."
                }
              ]
            },
            "description": "One async batch job's status by id: its status (queued, running, succeeded, failed) and the running counts (total, processed, succeeded, failed). Book-tier gated, agent-refused, and org-scoped; a foreign id is a uniform 404."
          },
          "response": []
        },
        {
          "name": "GET /v1/application-batch-jobs/{id}/results",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/application-batch-jobs/:id/results",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "application-batch-jobs",
                ":id",
                "results"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "example_id",
                  "description": "The batch job id."
                }
              ]
            },
            "description": "One async batch job's per-row results as a streamed CSV attachment: one row per submitted application in submission order, carrying its id, row index, status (succeeded, failed, or pending while the job is still running), the decided outcome and decision id on success, or the per-row error. Book-tier gated, agent-refused, and org-scoped; a foreign id is a uniform 404."
          },
          "response": []
        },
        {
          "name": "GET /v1/applications",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/applications?status=&product=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "applications"
              ],
              "query": [
                {
                  "key": "status",
                  "value": "",
                  "description": "Filter by decision status.",
                  "disabled": true
                },
                {
                  "key": "product",
                  "value": "",
                  "description": "Filter by loan product.",
                  "disabled": true
                }
              ]
            },
            "description": "The tenant's decided-application queue, newest first, bounded to a generous fixed limit. Book-tier gated, agent-refused, and tenant-scoped."
          },
          "response": []
        },
        {
          "name": "GET /v1/applications/{applicationId}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/applications/:applicationId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "applications",
                ":applicationId"
              ],
              "variable": [
                {
                  "key": "applicationId",
                  "value": "example_applicationId",
                  "description": "The application id."
                }
              ]
            },
            "description": "One application's full decision trace by id: the rendered decision, the grounds, each agent's pulled facts, and the replayable record. Book-tier gated, agent-refused, and tenant-scoped; a foreign id is a uniform 404."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Usage",
      "item": [
        {
          "name": "GET /v1/usage",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/usage",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "usage"
              ]
            },
            "description": "The caller's current-period usage against its tier quota. Read-only and tenant-scoped. SESSION-ONLY: this endpoint requires an interactive console session (cookie) and is not callable with an API key (any org member may read it via the console). Documented here for completeness; not part of the programmatic SDK.\n\nNOTE: session-only. This endpoint requires an interactive console session cookie and cannot be called with an API key.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Fleet",
      "item": [
        {
          "name": "POST /v1/fleet/ingest",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/fleet/ingest",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "fleet",
                "ingest"
              ]
            },
            "description": "Uploads the caller's own fleet telemetry (inline identity plus observable history per pack) to be scored and added to the caller's book, with per-record failures. SESSION-ONLY: ingesting a book is an admin console action; it requires a session (an API-key principal carries no org role) and is not callable with an API key. Documented for completeness; not part of the programmatic SDK.\n\nNOTE: session-only. This endpoint requires an interactive console session cookie and cannot be called with an API key.",
            "auth": {
              "type": "noauth"
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"packs\": [\n    {\n      \"identity\": {\n        \"packId\": \"ABCDE12345FGHIJ67890K\",\n        \"chemistry\": \"LFP\",\n        \"segment\": \"3W\",\n        \"ratedCapacityKwh\": 7.5\n      },\n      \"observations\": [\n        {\n          \"months\": 18,\n          \"equivalentFullCycles\": 640,\n          \"meanDod\": 0.72,\n          \"fastChargeFraction\": 0.35,\n          \"resistanceProxyOhm\": 0.021,\n          \"resistanceRatio\": 1.18,\n          \"coulombicEfficiency\": 0.992,\n          \"meanPackTempC\": 33.5\n        }\n      ]\n    }\n  ]\n}\n",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "GET /v1/fleet/drift",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/fleet/drift",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "fleet",
                "drift"
              ]
            },
            "description": "The latest feature-drift snapshot for the caller's tenant, computed best-effort on each ingest. SESSION-ONLY: session-admin gated against the acting org; not callable with an API key. Documented for completeness; not part of the programmatic SDK.\n\nNOTE: session-only. This endpoint requires an interactive console session cookie and cannot be called with an API key.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Certificates",
      "item": [
        {
          "name": "POST /v1/packs/{packId}/certificates",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/packs/:packId/certificates",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "packs",
                ":packId",
                "certificates"
              ],
              "variable": [
                {
                  "key": "packId",
                  "value": "ABCDE12345FGHIJ67890K",
                  "description": "The 21-character Battery Pack Aadhaar id of the pack."
                }
              ]
            },
            "description": "Issues a verifiable certificate for a pack by freezing its current graded score into a public snapshot. SESSION-ONLY: a certificate records its issuing org and user, so it requires a session (an API-key principal has neither); book-tier plus per-pack read:score access also apply. Documented for completeness; not part of the programmatic SDK.\n\nNOTE: session-only. This endpoint requires an interactive console session cookie and cannot be called with an API key.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": []
        },
        {
          "name": "GET /v1/packs/{packId}/certificates",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/packs/:packId/certificates",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "packs",
                ":packId",
                "certificates"
              ],
              "variable": [
                {
                  "key": "packId",
                  "value": "ABCDE12345FGHIJ67890K",
                  "description": "The 21-character Battery Pack Aadhaar id of the pack."
                }
              ]
            },
            "description": "Lists a pack's certificates for the caller's org, newest first. SESSION-ONLY, gated exactly like the issue path and scoped to the acting org. Documented for completeness; not part of the programmatic SDK.\n\nNOTE: session-only. This endpoint requires an interactive console session cookie and cannot be called with an API key.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": []
        },
        {
          "name": "POST /v1/certificates/{id}/revoke",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/certificates/:id/revoke",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "certificates",
                ":id",
                "revoke"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "example_id",
                  "description": "The certificate id."
                }
              ]
            },
            "description": "Revokes a certificate the caller's org issued, recording an optional reason for the issuer's own audit (never exposed on the public verify). SESSION-ONLY and issuer-org admin gated; a foreign id is a 404. Documented for completeness; not part of the programmatic SDK.\n\nNOTE: session-only. This endpoint requires an interactive console session cookie and cannot be called with an API key.",
            "auth": {
              "type": "noauth"
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"Superseded by a re-inspection\"\n}\n",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "GET /v1/certificates/{id}/document",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/certificates/:id/document",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "certificates",
                ":id",
                "document"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "example_id",
                  "description": "The certificate id."
                }
              ]
            },
            "description": "Serves the self-contained, print-ready HTML certificate for one certificate the caller's org owns, as a downloadable attachment. SESSION-ONLY and issuer-org scoped; a foreign id is a 404. Documented for completeness; not part of the programmatic SDK.\n\nNOTE: session-only. This endpoint requires an interactive console session cookie and cannot be called with an API key.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": []
        }
      ]
    }
  ]
}
