DomainOpsDomainOps

Portfolios API

Portfolios group domains for organisational purposes. Create, rename, and delete portfolios, and query the domain count for each.

GET/api/v1/portfoliosAuth required

List all portfolios in your account.

Query Parameters

ParameterTypeRequiredDescription
namestringNoFilter by portfolio name (partial match)
limitnumberNoMax results, default 50
offsetnumberNoPagination offset, default 0

Response

json
{
  "portfolios": [
    {
      "id": "uuid",
      "name": "Production",
      "description": "All production domains",
      "domain_count": 12,
      "created_at": "2026-01-01T00:00:00Z"
    }
  ],
  "total": 1
}
GET/api/v1/portfolios/:idAuth required

Get a single portfolio by UUID.

Response

json
{
  "id": "uuid",
  "name": "Production",
  "description": "All production domains",
  "domain_count": 12,
  "created_at": "2026-01-01T00:00:00Z"
}
POST/api/v1/portfoliosAuth required

Create a new portfolio.

Request Body

ParameterTypeRequiredDescription
namestringYesPortfolio name
descriptionstringNoOptional description

Response

json
{
  "id": "uuid",
  "name": "Production",
  "description": "All production domains",
  "domain_count": 0,
  "created_at": "2026-03-28T09:00:00Z"
}

Error Codes

StatusDescription
409A portfolio with this name already exists
PUT/api/v1/portfolios/:idAuth required

Update a portfolio's name or description.

Request Body

ParameterTypeRequiredDescription
namestringNoNew portfolio name
descriptionstringNoUpdated description

Response

json
{
  "id": "uuid",
  "name": "Renamed Portfolio",
  "description": "Updated description",
  "domain_count": 12,
  "updated_at": "2026-03-28T09:00:00Z"
}
DELETE/api/v1/portfolios/:idAuth required

Delete a portfolio. The portfolio must be empty before deletion.

Response

json
{
  "message": "Portfolio deleted",
  "deleted_portfolio": {
    "id": "uuid",
    "name": "Production"
  }
}

Error Codes

StatusDescription
409Portfolio still contains domains. Remove or reassign domains first.