def get_capabilities(self, params: Dict[str, str], response: QgsServerResponse, project: QgsProject) -> None:
        """ Get cadastral capabilities based on config stored as project custom variables
        """
        # get project custom variables
        variables = project.customVariables()

        if 'cadastre_parcelle_layer_id' not in variables or \
                'cadastre_parcelle_unique_field' not in variables:
            raise CadastreError(400, "Project has no cadastral capabilities")

        parcelle_layer_id = variables['cadastre_parcelle_layer_id']
        parcelle_layer_unique_field = variables['cadastre_parcelle_unique_field']

        player = project.mapLayer(parcelle_layer_id)
        if not player:
            raise CadastreError(404, "Parcel layer not available")

        capabilities = {
            'parcelle': {
                'id': player.id(),
                'name': player.name(),
                'title': player.title(),
                'shortName': player.shortName(),
                'unique_field': parcelle_layer_unique_field
            }
        }

        if 'cadastre_section_layer_id' in variables:
            section_layer_id = variables['cadastre_section_layer_id']
            slayer = project.mapLayer(section_layer_id)
            if slayer:
                capabilities['section'] = {
                    'id': slayer.id(),
                    'name': slayer.name(),
                    'title': slayer.title(),
                    'shortName': slayer.shortName()
                }
                if 'cadastre_section_unique_field' in variables:
                    capabilities['section']['unique_field'] = variables['cadastre_section_unique_field']

        if 'cadastre_commune_layer_id' in variables:
            commune_layer_id = variables['cadastre_commune_layer_id']
            slayer = project.mapLayer(commune_layer_id)
            if slayer:
                capabilities['commune'] = {
                    'id': slayer.id(),
                    'name': slayer.name(),
                    'title': slayer.title(),
                    'shortName': slayer.shortName()
                }
                if 'cadastre_commune_unique_field' in variables:
                    capabilities['commune']['unique_field'] = variables['cadastre_commune_unique_field']

        write_json_response({
            'status': 'success',
            'message': 'Capabilities',
            'data': capabilities
        }, response)