001package ca.uhn.fhir.rest.server.interceptor.auth;
002
003/*-
004 * #%L
005 * HAPI FHIR - Server Framework
006 * %%
007 * Copyright (C) 2014 - 2021 Smile CDR, Inc.
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 *
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 *
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023import org.hl7.fhir.instance.model.api.IIdType;
024
025import javax.annotation.Nonnull;
026
027/**
028 * @since 5.5.0
029 */
030public interface IAuthRuleBuilderRuleBulkExport {
031
032        /**
033         * Allow/deny <b>group-level</b> export rule applies to the Group with the given resource ID, e.g. <code>Group/123</code>
034         *
035         * @since 5.5.0
036         */
037        default IAuthRuleBuilderRuleBulkExportWithTarget groupExportOnGroup(@Nonnull IIdType theFocusResourceId) {
038                return groupExportOnGroup(theFocusResourceId.getValue());
039        }
040
041        /**
042         * Allow/deny <b>group-level</b> export rule applies to the Group with the given resource ID, e.g. <code>Group/123</code>
043         *
044         * @since 5.5.0
045         */
046        IAuthRuleBuilderRuleBulkExportWithTarget groupExportOnGroup(@Nonnull String theFocusResourceId);
047
048        /**
049         * Allow/deny <b>patient-level</b> export rule applies to the Group with the given resource ID, e.g. <code>Group/123</code>
050         *
051         * @since 5.5.0
052         */
053        default IAuthRuleBuilderRuleBulkExportWithTarget patientExportOnGroup(@Nonnull IIdType theFocusResourceId) {
054                return patientExportOnGroup(theFocusResourceId.getValue());
055        }
056
057        /**
058         * Allow/deny <b>patient-level</b> export rule applies to the Group with the given resource ID, e.g. <code>Group/123</code>
059         *
060         * @since 5.5.0
061         */
062        IAuthRuleBuilderRuleBulkExportWithTarget patientExportOnGroup(@Nonnull String theFocusResourceId);
063
064        /**
065         * Allow/deny <b>system-level</b> export rule applies to the Group with the given resource ID, e.g. <code>Group/123</code>
066         *
067         * @since 5.5.0
068         */
069        IAuthRuleBuilderRuleBulkExportWithTarget systemExport();
070
071        /**
072         * Allow/deny <b>any bulk export</b> operation
073         */
074        IAuthRuleBuilderRuleBulkExportWithTarget any();
075}