# List policies


[API catalog](/reference/api/) · [AI Governance overview](/reference/api/ai-governance/latest/) · [Product manual](https://docs.docker.com/ai/sandboxes/governance/) · [OpenAPI specification](/reference/api/ai-governance/api.yaml)

API version: 1



`GET /orgs/{org_name}/governance/policies`

Returns a shallow summary of the organization's policies, one page at a time. The rule set is not included; use GetPolicy to fetch the full object.

Results are paginated with an opaque cursor. Pass `page_size` to bound the page; if more policies remain, the response includes a non-null `next_page_token` to pass as `page_token` on the next request. Iterate until `next_page_token` is `null`. Treat the token as opaque; do not parse or construct it.


## Connection and access

[API connection and authentication guidance](/reference/api/ai-governance/latest/#authentication)


Server: `https://hub.docker.com/v2`

Effective security: alternatives are OR; schemes within an alternative are AND. An empty array declares no HTTP authentication requirement.

```json
[
  {
    "bearerAuth": []
  }
]
```
## Example request

Replace placeholders and provide the required credentials or request body.

```console
curl \
  --request GET \
  --header "Authorization: Bearer ${TOKEN}" \
  --header 'Accept: application/json' \
  'https://hub.docker.com/v2/orgs/<ORG_NAME>/governance/policies'
```

## Parameters

### org_name

Location: path. Required: yes.

Docker Hub organization name.

```json
{
  "description": "Docker Hub organization name.",
  "examples": {
    "default": {
      "value": "my-org"
    }
  },
  "in": "path",
  "name": "org_name",
  "pointer": "/paths/~1orgs~1{org_name}~1governance~1policies/parameters/0",
  "required": true,
  "schema": {
    "type": "string"
  }
}
```

### page_size

Location: query. Required: no.

Maximum number of policies to return. Defaults to 100 if omitted or zero. The server caps values above 100 at 100.


```json
{
  "description": "Maximum number of policies to return. Defaults to 100 if omitted or zero. The server caps values above 100 at 100.\n",
  "in": "query",
  "name": "page_size",
  "pointer": "/paths/~1orgs~1{org_name}~1governance~1policies/get/parameters/0",
  "required": false,
  "schema": {
    "default": 100,
    "minimum": 0,
    "type": "integer"
  }
}
```

### page_token

Location: query. Required: no.

Opaque cursor from a previous response's `next_page_token`. Omit to fetch the first page.


```json
{
  "description": "Opaque cursor from a previous response's `next_page_token`. Omit to fetch the first page.\n",
  "in": "query",
  "name": "page_token",
  "pointer": "/paths/~1orgs~1{org_name}~1governance~1policies/get/parameters/1",
  "required": false,
  "schema": {
    "type": "string"
  }
}
```

## Request and responses

### Response 200 application/json

Object wrapping an array of policy summaries under `data` and a `next_page_token`, which is null on the last page. Rule sets are not included; use GetPolicy to fetch a full policy.


Schema:

```json
{
  "properties": {
    "data": {
      "items": {
        "$ref": "#/components/schemas/PolicySummary"
      },
      "type": "array"
    },
    "next_page_token": {
      "description": "The opaque cursor for the next page, or `null` on the last page.\n",
      "example": "AQpteyJQSyI6Im15LW9yZyIsIlNLIjoicG9saWN5I3BvbF8ifQ",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "data",
    "next_page_token"
  ],
  "type": "object"
}
```




default:
```json
{
  "data": [
    {
      "created_at": "2026-04-22T00:00:00Z",
      "id": "pol_06evsmp24r1pg71cm8500546pkbn",
      "name": "Security Research — hardened",
      "org": "my-org",
      "scope": {
        "teams": [
          "d290f1ee-6c54-4b01-90e6-d701748f0851"
        ]
      },
      "type": "allowlist_v0",
      "updated_at": "2026-04-22T00:00:00Z"
    }
  ],
  "next_page_token": "AQpteyJQSyI6Im15LW9yZyIsIlNLIjoicG9saWN5I3BvbF8ifQ"
}
```


### Response 400 application/json

Bad request


Schema:

```json
{
  "$ref": "#/components/schemas/Error"
}
```




default:
```json
{
  "error": {
    "code": "invalid_argument",
    "message": "name is required"
  }
}
```


### Response 401 application/json

Missing or invalid credentials


Schema:

```json
{
  "$ref": "#/components/schemas/Error"
}
```




default:
```json
{
  "error": {
    "code": "unauthenticated",
    "message": "unauthenticated"
  }
}
```


### Response 403 application/json

Caller lacks the required permission for this org, or the org is not entitled to use governance.



Schema:

```json
{
  "$ref": "#/components/schemas/Error"
}
```




default:
```json
{
  "error": {
    "code": "permission_denied",
    "message": "permission denied"
  }
}
```


### Response 404 application/json

Not found


Schema:

```json
{
  "$ref": "#/components/schemas/Error"
}
```




default:
```json
{
  "error": {
    "code": "not_found",
    "message": "policy not found"
  }
}
```


### Response 500 application/json

Internal server error


Schema:

```json
{
  "$ref": "#/components/schemas/Error"
}
```




default:
```json
{
  "error": {
    "code": "internal",
    "message": "internal error"
  }
}
```


## Complete operation contract

```json
{
  "description": "Returns a shallow summary of the organization's policies, one page at a time. The rule set is not included; use GetPolicy to fetch the full object.\n\nResults are paginated with an opaque cursor. Pass `page_size` to bound the page; if more policies remain, the response includes a non-null `next_page_token` to pass as `page_token` on the next request. Iterate until `next_page_token` is `null`. Treat the token as opaque; do not parse or construct it.\n",
  "operationId": "listPolicies",
  "parameters": [
    {
      "description": "Maximum number of policies to return. Defaults to 100 if omitted or zero. The server caps values above 100 at 100.\n",
      "in": "query",
      "name": "page_size",
      "required": false,
      "schema": {
        "default": 100,
        "minimum": 0,
        "type": "integer"
      }
    },
    {
      "description": "Opaque cursor from a previous response's `next_page_token`. Omit to fetch the first page.\n",
      "in": "query",
      "name": "page_token",
      "required": false,
      "schema": {
        "type": "string"
      }
    }
  ],
  "responses": {
    "200": {
      "content": {
        "application/json": {
          "examples": {
            "default": {
              "value": {
                "data": [
                  {
                    "created_at": "2026-04-22T00:00:00Z",
                    "id": "pol_06evsmp24r1pg71cm8500546pkbn",
                    "name": "Security Research — hardened",
                    "org": "my-org",
                    "scope": {
                      "teams": [
                        "d290f1ee-6c54-4b01-90e6-d701748f0851"
                      ]
                    },
                    "type": "allowlist_v0",
                    "updated_at": "2026-04-22T00:00:00Z"
                  }
                ],
                "next_page_token": "AQpteyJQSyI6Im15LW9yZyIsIlNLIjoicG9saWN5I3BvbF8ifQ"
              }
            }
          },
          "schema": {
            "properties": {
              "data": {
                "items": {
                  "$ref": "#/components/schemas/PolicySummary"
                },
                "type": "array"
              },
              "next_page_token": {
                "description": "The opaque cursor for the next page, or `null` on the last page.\n",
                "example": "AQpteyJQSyI6Im15LW9yZyIsIlNLIjoicG9saWN5I3BvbF8ifQ",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "data",
              "next_page_token"
            ],
            "type": "object"
          }
        }
      },
      "description": "Object wrapping an array of policy summaries under `data` and a `next_page_token`, which is null on the last page. Rule sets are not included; use GetPolicy to fetch a full policy."
    },
    "400": {
      "$ref": "#/components/responses/InvalidArgument"
    },
    "401": {
      "$ref": "#/components/responses/Unauthenticated"
    },
    "403": {
      "$ref": "#/components/responses/PermissionDenied"
    },
    "404": {
      "$ref": "#/components/responses/NotFound"
    },
    "500": {
      "$ref": "#/components/responses/InternalError"
    }
  },
  "summary": "List policies",
  "tags": [
    "policies"
  ]
}
```

## Referenced schemas

- `#/components/responses/InternalError`

- `#/components/responses/InvalidArgument`

- `#/components/responses/NotFound`

- `#/components/responses/PermissionDenied`

- `#/components/responses/Unauthenticated`

- [#/components/schemas/PolicySummary](/reference/api/ai-governance/latest/schemas/PolicySummary/)




