---
title: "[Beta] Returns the project's eligibility for upgrades"
method: GET
path: "/v1/projects/{ref}/upgrade/eligibility"
tags: ["Projects"]
---

# [Beta] Returns the project's eligibility for upgrades

`GET /v1/projects/{ref}/upgrade/eligibility`

## Path parameters

- `ref` string, required

## Response `200`

- ProjectUpgradeEligibilityResponse
  - `eligible` boolean, required
  - `current_app_version` string, required
  - `current_app_version_release_channel` 'internal' | 'alpha' | 'beta' | 'ga' | 'withdrawn' | 'preview', required
  - `latest_app_version` string, required
  - `target_upgrade_versions` object[], required
    - `postgres_version` '13' | '14' | '15' | '17' | '17-oriole', required
    - `release_channel` 'internal' | 'alpha' | 'beta' | 'ga' | 'withdrawn' | 'preview', required
    - `app_version` string, required
  - `duration_estimate_hours` number, required
  - `legacy_auth_custom_roles` string[], required
  - `objects_to_be_dropped` string[], required — Use validation_errors instead.
  - `unsupported_extensions` string[], required — Use validation_errors instead.
  - `user_defined_objects_in_internal_schemas` string[], required — Use validation_errors instead.
  - `validation_errors` union[], required
    - union
      - object
        - `type` 'objects_depending_on_pg_cron', required
        - `dependents` string[], required
      - object
        - `type` 'indexes_referencing_ll_to_earth', required
        - `schema_name` string, required
        - `table_name` string, required
        - `index_name` string, required
      - object
        - `type` 'function_using_obsolete_lang', required
        - `schema_name` string, required
        - `function_name` string, required
        - `lang_name` string, required
      - object
        - `type` 'unsupported_extension', required
        - `extension_name` string, required
      - object
        - `type` 'unsupported_fdw_handler', required
        - `fdw_name` string, required
        - `fdw_handler_name` string, required
      - object
        - `type` 'unlogged_table_with_persistent_sequence', required
        - `schema_name` string, required
        - `table_name` string, required
        - `sequence_name` string, required
      - object
        - `type` 'user_defined_objects_in_internal_schemas', required
        - `obj_type` 'table' | 'function', required
        - `schema_name` string, required
        - `obj_name` string, required
      - object
        - `type` 'active_replication_slot', required
        - `slot_name` string, required
      - object
        - `type` 'x86_architecture', required
      - object
        - `type` 'project_hibernating', required
  - `warnings` union[], required
    - union
      - object
        - `type` 'pg_graphql_introspection_change', required
      - object
        - `type` 'ltree_reindex_required', required
      - object
        - `type` 'operator_estimator_gate', required

## Other responses

- `401` — Unauthorized
- `403` — Forbidden action
- `429` — Rate limit exceeded
- `500` — Failed to determine project upgrade eligibility

---

[API](https://skmtc.net/supabase/apis/management-api.md) · [All operations](https://skmtc.net/supabase/apis/management-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/supabase/management-api/versions/a7cb39418064/schema)
