All Downloads are FREE. Search and download functionalities are using the official Maven repository.

dev.fitko.fitconnect.api.services.events.CaseService Maven / Gradle / Ivy

Go to download

Library that provides client access to the FIT-Connect api-endpoints for sending, subscribing and routing

There is a newer version: 2.3.5
Show newest version
package dev.fitko.fitconnect.api.services.events;

import dev.fitko.fitconnect.api.domain.model.cases.Case;
import dev.fitko.fitconnect.api.domain.model.cases.Cases;
import dev.fitko.fitconnect.api.domain.model.event.EventLog;
import dev.fitko.fitconnect.api.domain.model.event.EventLogEntry;
import dev.fitko.fitconnect.api.domain.model.event.Status;
import dev.fitko.fitconnect.api.domain.model.event.authtags.AuthenticationTags;
import dev.fitko.fitconnect.api.domain.model.reply.Reply;
import dev.fitko.fitconnect.api.domain.model.reply.SentReply;
import dev.fitko.fitconnect.api.domain.model.submission.SentSubmission;
import dev.fitko.fitconnect.api.domain.model.submission.Submission;
import dev.fitko.fitconnect.api.exceptions.internal.EventLogException;
import dev.fitko.fitconnect.api.exceptions.internal.RestApiException;

import java.util.List;
import java.util.UUID;

/**
 * A service that provides access to the {@link Submission}s {@link EventLog} and {@link Case} via the FIT-Connect REST-API.
 * Every event is a recorded step within the process of sending a submission or a case.
 * Events are encoded as security event tokens (SET).
 **
 * @see Event Documentation
 * @see Submission-API
 */
public interface CaseService {

    /**
     * Get the {@link EventLog} by caseId.
     *
     * @param caseId unique case identifier
     * @param destinationId unique identifier of the destination
     * @return list of {@link EventLogEntry}
     * @throws EventLogException if a technical error occurred or the validation failed
     */
    List getEventLog(UUID caseId, UUID destinationId) throws EventLogException;

    /**
     * Lists all {@link Cases} that are visible to the client.
     *
     * @param limit max entries per request
     * @param offset skip n elements
     *
     * @return list of cases
     * @throws RestApiException if a technical error occurred
     */
    Cases listCases(int limit, int offset) throws RestApiException;

    /**
     * Load a specific {@link Case} for a caseId.
     *
     * @return {@link Case}
     * @throws RestApiException if a technical error occurred
     */
    Case getCase(UUID caseId) throws RestApiException;

    /**
     * Retrieve the authentication tags for the submitted state of a submission.
     *
     * @return {@link AuthenticationTags} of the submit event
     * @throws EventLogException if a validation error occurred
     * @throws RestApiException if a technical error occurred
     */
    AuthenticationTags getAuthenticationTags(Submission submission) throws RestApiException, EventLogException;

    /**
     * Retrieve the authentication tags for the submitted state of a reply.
     *
     * @return {@link AuthenticationTags} of the submit event
     * @throws EventLogException if a validation error occurred
     * @throws RestApiException if a technical error occurred
     */
    AuthenticationTags getAuthenticationTags(Reply reply) throws RestApiException, EventLogException;

    /**
     * Send an event for a given caseId.
     *
     * @param caseId unique case identifier
     * @param signedAndSerializedSET the serialised and signed event as SET string
     * @throws EventLogException if a validation error occurred
     * @throws RestApiException if a technical error occurred
     */
    void sendEvent(UUID caseId, String signedAndSerializedSET) throws RestApiException, EventLogException;

    /**
     * Retrieve the latest status of a {@link Submission}.
     *
     * @return {@link Status} the current status
     * @throws EventLogException if a validation failed
     * @throws RestApiException if a technical error occurred
     */
    Status getStatus(SentSubmission sentSubmission) throws RestApiException, EventLogException;

    /**
     * Retrieve the latest status of a {@link Reply}.
     *
     * @return {@link Status} the current status
     * @throws EventLogException if a validation error occurred
     * @throws RestApiException if a technical error occurred
     */
    Status getStatus(SentReply reply) throws RestApiException, EventLogException;

    /**
     * Retrieve submitted state of a submission.
     *
     * @return {@link Status} the submitted status
     * @throws EventLogException if a validation error occurred
     * @throws RestApiException if a technical error occurred
     */
    Status getSubmissionSubmitState(UUID caseId, UUID submissionId) throws RestApiException, EventLogException;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy