{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/portainer/main/json-schema/portainer-portainer-registry-schema.json",
  "title": "portainer.Registry",
  "x-generated": "2026-10-03",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/portainer-endpoints-api-openapi.yml#/components/schemas/portainer.Registry",
  "properties": {
    "AccessToken": {
      "description": "Stores temporary access token",
      "type": "string"
    },
    "AccessTokenExpiry": {
      "type": "integer"
    },
    "Authentication": {
      "description": "Is authentication against this registry enabled",
      "type": "boolean"
    },
    "AuthorizedTeams": {
      "description": "Deprecated in DBVersion == 18",
      "items": {
        "type": "integer"
      },
      "type": "array"
    },
    "AuthorizedUsers": {
      "description": "Deprecated in DBVersion == 18",
      "items": {
        "type": "integer"
      },
      "type": "array"
    },
    "BaseURL": {
      "description": "Base URL, introduced for ProGet registry",
      "type": "string"
    },
    "Ecr": {
      "$ref": "#/$defs/portainer.EcrData"
    },
    "Github": {
      "$ref": "#/$defs/portainer.GithubRegistryData"
    },
    "Gitlab": {
      "$ref": "#/$defs/portainer.GitlabRegistryData"
    },
    "Id": {
      "description": "Registry Identifier",
      "type": "integer"
    },
    "ManagementConfiguration": {
      "$ref": "#/$defs/portainer.RegistryManagementConfiguration"
    },
    "Name": {
      "description": "Registry Name",
      "type": "string"
    },
    "Password": {
      "description": "Password or SecretAccessKey used to authenticate against this registry",
      "type": "string"
    },
    "Quay": {
      "$ref": "#/$defs/portainer.QuayRegistryData"
    },
    "RegistryAccesses": {
      "$ref": "#/$defs/portainer.RegistryAccesses"
    },
    "TeamAccessPolicies": {
      "allOf": [
        {
          "$ref": "#/$defs/portainer.TeamAccessPolicies"
        }
      ],
      "description": "Deprecated in DBVersion == 31"
    },
    "Type": {
      "allOf": [
        {
          "$ref": "#/$defs/portainer.RegistryType"
        }
      ],
      "description": "Registry Type (1 - Quay, 2 - Azure, 3 - Custom, 4 - Gitlab, 5 - ProGet, 6 - DockerHub, 7 - ECR)",
      "enum": [
        1,
        2,
        3,
        4,
        5,
        6,
        7
      ]
    },
    "URL": {
      "description": "URL or IP address of the Docker registry",
      "type": "string"
    },
    "UserAccessPolicies": {
      "allOf": [
        {
          "$ref": "#/$defs/portainer.UserAccessPolicies"
        }
      ],
      "description": "Deprecated fields\nDeprecated in DBVersion == 31"
    },
    "Username": {
      "description": "Username or AccessKeyID used to authenticate against this registry",
      "type": "string"
    }
  },
  "type": "object",
  "$defs": {
    "portainer.AccessPolicy": {
      "properties": {
        "Namespaces": {
          "description": "Namespaces is a list of namespaces that this access policy applies to. Only used for namespaced level roles",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "RoleId": {
          "description": "Role identifier. Reference the role that will be associated to this access policy",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "portainer.EcrData": {
      "properties": {
        "Region": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "portainer.GithubRegistryData": {
      "properties": {
        "OrganisationName": {
          "type": "string"
        },
        "UseOrganisation": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "portainer.GitlabRegistryData": {
      "properties": {
        "InstanceURL": {
          "type": "string"
        },
        "ProjectId": {
          "type": "integer"
        },
        "ProjectPath": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "portainer.QuayRegistryData": {
      "properties": {
        "OrganisationName": {
          "type": "string"
        },
        "UseOrganisation": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "portainer.RegistryAccessPolicies": {
      "properties": {
        "Namespaces": {
          "description": "Kubernetes specific fields (with kubernetes, namespaces have access to a registry, if users/teams have access to the same namespace, they have access to the registry)",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "TeamAccessPolicies": {
          "$ref": "#/$defs/portainer.TeamAccessPolicies"
        },
        "UserAccessPolicies": {
          "allOf": [
            {
              "$ref": "#/$defs/portainer.UserAccessPolicies"
            }
          ],
          "description": "Docker specific fields (with docker, users/teams have access to a registry)"
        }
      },
      "type": "object"
    },
    "portainer.RegistryAccesses": {
      "additionalProperties": {
        "$ref": "#/$defs/portainer.RegistryAccessPolicies"
      },
      "type": "object"
    },
    "portainer.RegistryManagementConfiguration": {
      "properties": {
        "AccessToken": {
          "type": "string"
        },
        "AccessTokenExpiry": {
          "type": "integer"
        },
        "Authentication": {
          "type": "boolean"
        },
        "Ecr": {
          "$ref": "#/$defs/portainer.EcrData"
        },
        "Password": {
          "type": "string"
        },
        "TLSConfig": {
          "$ref": "#/$defs/portainer.TLSConfiguration"
        },
        "Type": {
          "$ref": "#/$defs/portainer.RegistryType"
        },
        "Username": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "portainer.RegistryType": {
      "enum": [
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8
      ],
      "type": "integer",
      "x-enum-varnames": [
        "_",
        "QuayRegistry",
        "AzureRegistry",
        "CustomRegistry",
        "GitlabRegistry",
        "ProGetRegistry",
        "DockerHubRegistry",
        "EcrRegistry",
        "GithubRegistry"
      ]
    },
    "portainer.TLSConfiguration": {
      "properties": {
        "TLS": {
          "description": "Use TLS",
          "type": "boolean"
        },
        "TLSCACert": {
          "description": "Path to the TLS CA certificate file",
          "type": "string"
        },
        "TLSCert": {
          "description": "Path to the TLS client certificate file",
          "type": "string"
        },
        "TLSKey": {
          "description": "Path to the TLS client key file",
          "type": "string"
        },
        "TLSSkipVerify": {
          "description": "Skip the verification of the server TLS certificate",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "portainer.TeamAccessPolicies": {
      "additionalProperties": {
        "$ref": "#/$defs/portainer.AccessPolicy"
      },
      "type": "object"
    },
    "portainer.UserAccessPolicies": {
      "additionalProperties": {
        "$ref": "#/$defs/portainer.AccessPolicy"
      },
      "type": "object"
    }
  }
}