"""Generic error messages.""" ERROR_CODE_AUTHORIZATION = 'authorization_error' ERROR_CODE_BAD_GRASS_REQUEST = 'bad_grass_request_error' ERROR_CODE_NOT_FOUND = 'not_found' ERROR_CODE_BAD_REQUEST = 'bad_request' ERROR_MESSAGE_MISSING_GRASS_HEADERS = 'Missing Grass Headers' ERROR_MESSAGE_INCOMPLETE_GRASS_HEADERS = 'Incomplete Grass Headers' ERROR_MESSAGE_INVALID_GRASS_ACCOUNT_TYPE = 'Invalid Grass Account Type' ERROR_MESSAGE_FORBIDDEN_USER = 'User is forbidden' ERROR_ALREADY_EXISTS = 'A {object_type} with that name already exists.' ERROR_CANNOT_REUSE_PAYEE = ( 'Payment Group for a specific payee cannot be marked as reusable.' ) ERROR_CANNOT_REUSE = 'Payment Group for a specific account cannot be reusable.' ERROR_REUSE = 'Payment Group should be reusable.' ERROR_PAYMENT_NAME_MISSING = ( 'payment_name field is required for an account specific payment group.' ) ERROR_FIELD_MISSING = '{field} must be specified' ERROR_INVALID_GROUP_CRITERIA = 'No other criteria should be included with account_id.' ERROR_INVALID_GROUP_CRITERIA_ACCOUNT = ( 'Either account_id or account_ids should be used.' ) ERROR_INVALID_GROUP_CRITERIA_DUPLICATE_ACCOUNT_ID = ( 'Duplicate in account_ids is not allowed.' ) ERROR_INVALID_LIMIT_OFFSET = 'Limit and offset must be valid integers' ERROR_INVALID_PAYMENT_BATCH_STATUS = ( 'The status of the payment batch must be one of {batch_status}.' ) ERROR_INVALID_SORT_BY = 'Sort by not recognized: {sort_by}' ERROR_INVALID_SORT_ORDER = 'Sort order must be one of "asc" or "desc"' ERROR_INVALID_STATUS_CHANGE = ( 'Payment Status cannot transition from {current_status} to {new_status}' ) ERROR_MISSING_JSON_BODY = 'Expecting a JSON body.' ERROR_ONLY_ONE_REFERENCE_PAYMENT_ENTITY = ( 'There can be only one reference payment entity specified.' ) ERROR_PAYMENT_NOT_FOUND = 'Specified payment was not found' ERROR_PAYMENT_UPDATE_INVALID_STATUS = ( 'Payment status does not allow it to update or delete.' ) ERROR_UNKNOWN_CURRENCY = 'Currency code not recognized: {code}' ERROR_AT_LEAST_ONE_PAYEE = 'At least one payee is required' ERROR_EXCHANGE_RATE_REQUIRED = 'Existing exchange rate is required' ERROR_INVALID_EXCHANGE_RATE = 'Invalid exchange rate for provided currencies' ERROR_WORKSHEET_ALREADY_EXISTS = 'The worksheet already exists' ERROR_WORKSHEET_NOT_FOUND = ( 'The worksheet does not exist for contract advance ID ' '{contract_advance_id}.' ) ERROR_WORKSHEET_STATUS_REQUIRED = ( 'The worksheet action "{action}" should have the "{status}" status.' ) ERROR_INVALID_IDS = '{object} IDs must be integers' ERROR_CONTRACT_DUPLICATE = 'Duplicate contract_id in request' ERROR_INTEGRITY = 'IntegrityError: Cannot add or update a child row' ERROR_MISSING_IDS = '{object} IDs must be provided' ERROR_NO_INSTANCES_TO_CREATE = 'No instances to create' ERROR_UPDATE_NON_REUSABLE_PAYMENT_GROUP = 'Non reusable group update is forbidden.' ERROR_DUPLICATE_ACCOUNT_ID_BULK_FILTER = ( 'Duplicate account id in account_ids filter is not allowed.' ) ERROR_BULK_MAX_LIMIT = 'Cannot process more than {} items at once.' ERROR_ALLOCATION_DUPLICATE = 'Duplicate payment_allocation_id in request.' ERROR_ALLOCATION_FLOWTHROUGH_MISSED = 'Flowthrough allocations not found for IDs: {}.' ERROR_NO_VALID_IDENTITY_IN_CONTEXT = 'No valid identity found in request context' ERROR_NOT_PERMITTED_IDENTITY = ( 'Identity {jwt_identity} is not permitted for this endpoint' ) ERROR_DONT_HAVE_PERMISSIONS = "You don't have access to this resource!" ERROR_BULK_REQUIRED_FIELDS = ( 'The fields are required for the items in bulk request: {}.' ) ERROR_PAYMENTS_SEARCH_REQUIRED_FILTERS = 'At least one filter is required.'