pib-service-api-permissions 0.18.0

pib-service edit API permission enforcement system
Documentation
// SPDX-FileCopyrightText: Politik im Blick developers
// SPDX-FileCopyrightText: Wolfgang Silbermayr <wolfgang@silbermayr.at>
//
// SPDX-License-Identifier: AGPL-3.0-or-later OR EUPL-1.2

use pib_service_core_types::{AgendaItemId, BodyId, MeetingId, OrganizationId, PersonId};

#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Resource {
    /// `/me/profile`
    MeProfile,

    /// `/body`
    Body,

    /// `/user`
    User,

    /// `/body/{body_id}`
    BodyById { body_id: BodyId },

    /// `/body/{body_id}/permission`
    BodyByIdPermission { body_id: BodyId },

    /// `/body/{body_id}/person`
    BodyByIdPerson { body_id: BodyId },

    /// `/body/{body_id}/person/{person_id}`
    BodyByIdPersonById {
        body_id: BodyId,
        person_id: PersonId,
    },

    /// `/body/{body_id}/organization`
    BodyByIdOrganization { body_id: BodyId },

    /// `/body/{body_id}/organization/{organization_id}`
    BodyByIdOrganizationById {
        body_id: BodyId,
        organization_id: OrganizationId,
    },

    /// `/body/{body_id}/meeting`
    BodyByIdMeeting { body_id: BodyId },

    /// `/body/{body_id}/meeting/{meeting_id}`
    BodyByIdMeetingById {
        body_id: BodyId,
        meeting_id: MeetingId,
    },

    /// `/body/{body_id}/meeting/{meeting_id}/agenda_item`
    BodyByIdMeetingByIdAgendaItem {
        body_id: BodyId,
        meeting_id: MeetingId,
    },

    /// `/body/{body_id}/meeting/{meeting_id}/agenda_item/{agenda_item_id}`
    BodyByIdMeetingByIdAgendaItemById {
        body_id: BodyId,
        meeting_id: MeetingId,
        agenda_item_id: AgendaItemId,
    },
}