"""Application related schemas.""" from enum import StrEnum from marshmallow import fields, Schema, validate, validates_schema, ValidationError from users import constants class ResourceType(StrEnum): """Resource types.""" VENDOR = constants.RESOURCE_VENDOR SUBACCOUNT = constants.RESOURCE_SUBACCOUNT LABEL_PARTICIPANT = constants.RESOURCE_LABEL_PARTICIPANT COLLABORATOR = constants.RESOURCE_COLLABORATOR class GetApplicationsRequestSchema(Schema): """Get applications request validation schema.""" identity_id = fields.String(required=True, data_key='orchard_identity_id') resource_type = fields.Enum(ResourceType, by_value=True) resource_uuid = fields.UUID() role = fields.Str() brand = fields.String(validate=validate.OneOf(constants.BRAND_TYPES)) @validates_schema def validate_resource_fields(self, data, **kwargs): """ Validates that resource_type and resource_uuid are provided together. """ if ('resource_type' in data) != ('resource_uuid' in data): raise ValidationError('resource_type and resource_uuid must be provided together.')