---
updatedAt: 2026-08-12T10:31:30.000Z
agentTools:
  projectIndex: https://developer.doit.com/llms.txt
---

# List the caller's reseller PMA nodes

Lists every reseller program management account (RPMA) node belonging to the calling
reseller, with handshake state and status but without end-customer tenants — the
reseller-tier analog of `GET /billingtransfer/v1/programmanagementaccounts`.


# OpenAPI definition

```json
{
  "openapi": "3.0.1",
  "info": {
    "title": "DoiT Cloud Intelligence",
    "description": "Programmatic access to DoiT Platform",
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://api.doit.com"
    }
  ],
  "security": [
    {
      "api_key": []
    },
    {
      "tenantId": [],
      "api_key": []
    }
  ],
  "tags": [
    {
      "name": "Billing Transfer",
      "description": "Manage AWS billing-transfer mappings between distributors and resellers and between resellers and end customers, and list program management accounts."
    }
  ],
  "paths": {
    "/billingtransfer/v1/reseller-accounts": {
      "get": {
        "tags": [
          "Billing Transfer"
        ],
        "summary": "List the caller's reseller PMA nodes",
        "description": "Lists every reseller program management account (RPMA) node belonging to the calling\nreseller, with handshake state and status but without end-customer tenants — the\nreseller-tier analog of `GET /billingtransfer/v1/programmanagementaccounts`.\n",
        "operationId": "listBillingTransferResellerAccounts",
        "parameters": [
          {
            "$ref": "#/components/parameters/tenantId"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResellerAccountsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "description": "Forbidden - The caller lacks the BillingTransferAdmin permission.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingTransferProblemDetails"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Error": {
        "type": "object",
        "description": "Standard error response structure.",
        "properties": {
          "error": {
            "type": "string",
            "description": "Detailed error message."
          }
        }
      },
      "BillingTransferProblemDetails": {
        "type": "object",
        "description": "RFC 7807 problem-detail body returned by Billing Transfer endpoints for 4xx/5xx errors.",
        "additionalProperties": false,
        "required": [
          "type",
          "title",
          "status",
          "code"
        ],
        "properties": {
          "type": {
            "type": "string",
            "format": "uri",
            "description": "A URI identifying the problem type."
          },
          "title": {
            "type": "string",
            "description": "Short, human-readable summary of the problem type."
          },
          "status": {
            "type": "integer",
            "description": "The HTTP status code repeated in the body."
          },
          "detail": {
            "type": "string",
            "description": "Human-readable explanation specific to this occurrence of the problem."
          },
          "code": {
            "type": "string",
            "description": "Stable machine-readable error code.",
            "example": "billing-transfer.batch_validation_failed"
          },
          "retryable": {
            "type": "boolean",
            "description": "Whether retrying the same request may succeed without changes."
          },
          "invalidItems": {
            "type": "array",
            "description": "Present on batch-validation failures; the batch items that failed validation.",
            "items": {
              "$ref": "#/components/schemas/InvalidHandshakeItem"
            }
          }
        }
      },
      "InvalidHandshakeItem": {
        "type": "object",
        "description": "A single batch item that failed validation before processing began.",
        "additionalProperties": false,
        "required": [
          "index",
          "code"
        ],
        "properties": {
          "index": {
            "type": "integer",
            "description": "Zero-based position of the invalid item within the submitted batch."
          },
          "resellerCustomerId": {
            "type": "string",
            "description": "Present when the invalid item is a reseller-handshake batch item."
          },
          "code": {
            "type": "string",
            "description": "Stable machine-readable error code (e.g. `duplicate_pma`, `duplicate_ec_account`).",
            "example": "duplicate_pma"
          },
          "reason": {
            "type": "string",
            "description": "Human-readable explanation of why the item is invalid."
          }
        }
      },
      "HandshakeState": {
        "type": "string",
        "description": "AWS Organizations Handshake `State` value, lowercased.",
        "enum": [
          "requested",
          "open",
          "canceled",
          "accepted",
          "declined",
          "expired"
        ]
      },
      "ResellerAccount": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "resellerPmaAccountId",
          "dpmaId",
          "handshakeId",
          "handshakeState",
          "status",
          "createdAt"
        ],
        "properties": {
          "resellerPmaAccountId": {
            "type": "string",
            "description": "12-digit AWS account ID of the reseller's program management account.",
            "example": "123456789012"
          },
          "dpmaId": {
            "type": "string"
          },
          "handshakeId": {
            "type": "string"
          },
          "handshakeState": {
            "$ref": "#/components/schemas/HandshakeState"
          },
          "status": {
            "type": "string",
            "enum": [
              "handshake_pending",
              "cur_export_waiting",
              "active",
              "declined",
              "canceled",
              "expired"
            ]
          },
          "effectiveTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "When the handshake reached a terminal state. `null` until then."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ListResellerAccountsResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "items"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResellerAccount"
            }
          }
        }
      }
    },
    "responses": {
      "400": {
        "description": "Bad Request - The server cannot process the request, often due to a malformed request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "401": {
        "description": "Unauthorized - Invalid API key.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "500": {
        "description": "Internal Server Error - Something went wrong with the DoiT API server.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    },
    "parameters": {
      "tenantId": {
        "in": "header",
        "name": "X-Tenant-Id",
        "required": false,
        "description": "Customer (tenant) ID for the request. This is separate from authentication: you still pass your personal or service account API token in the `Authorization` header (`Bearer <token>`). See [Get Started](https://developer.doit.com/docs/start).\n\n**When to omit (most callers):** If your personal or service account token belongs to a single customer, omit this header. The API resolves that customer from the token.\n\n**When to send:** If your credential can access more than one customer, set `X-Tenant-Id` to the customer ID you want to act on. A service account can select an active direct or nested descendant of its home customer; the endpoint's normal permissions, entitlements, and resource-ownership checks still apply. A service-account target outside that customer subtree returns `403 Forbidden`. Prefer this header over the legacy `customerContext` query parameter, which only applies to legacy API keys and is ignored by personal and service account tokens.",
        "schema": {
          "type": "string",
          "example": "Kp2mN8qL4vR0sT1wX3yZ"
        }
      }
    },
    "securitySchemes": {
      "api_key": {
        "type": "apiKey",
        "name": "Authorization",
        "description": "Use the \"Bearer <API_KEY>\" format or sign in for autofill",
        "in": "header"
      },
      "tenantId": {
        "type": "apiKey",
        "name": "X-Tenant-Id",
        "description": "Customer (tenant) ID for the request. Separate from your API token: always authenticate with `Authorization: Bearer <token>` (personal or service account). See [Get Started](https://developer.doit.com/docs/start). Omit when your token is scoped to a single customer (resolved automatically). A service account can select an active direct or nested descendant of its home customer; the endpoint's normal permissions, entitlements, and resource-ownership checks still apply. A service-account target outside that customer subtree returns `403 Forbidden`. Prefer this header over the legacy `customerContext` query parameter, which only applies to legacy API keys and is ignored by personal and service account tokens.",
        "in": "header"
      }
    }
  },
  "x-samples-languages": [
    "curl",
    "go",
    "node",
    "python"
  ],
  "x-cli-config": {
    "security": "oauth2",
    "params": {
      "client_id": "cli"
    }
  }
}
```