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

io.github.archangelx360.models.SubmissionLogURLResponse.kt Maven / Gradle / Ivy

package io.github.archangelx360.models

import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonClassDiscriminator

/**
 * The notary service’s response to a request for the log information about a completed submission.
 *
 * https://developer.apple.com/documentation/notaryapi/submissionlogurlresponse
 */
@Serializable
data class SubmissionLogURLResponse(
    /**
     * Data that indicates how to get the log information for a particular submission.
     */
    val data: Data?,
    /**
     * An empty object that you can ignore.
     */
    val meta: Meta?,
) {
    @Serializable
    data class Data(
        /**
         * The unique identifier for this submission. This value matches the value that you provided as a path parameter to the Get Submission Log call that elicited this response.
         */
        val id: String?,
        /**
         * The resource type.
         */
        val type: String?,
        /**
         *
         */
        val attributes: Attributes?,
    ) {
        /**
         * Information about the log associated with the submission.
         *
         * https://developer.apple.com/documentation/notaryapi/submissionlogurlresponse/data/attributes
         */
        @Serializable
        data class Attributes(
            /**
             * The URL that you use to download the logs for a submission. The URL serves a JSON-encoded file that contains the log information.
             * The URL is valid for only a few hours. If you need the log again later, ask for the URL again by making another call to the Get Submission Log endpoint.
             */
            val developerLogUrl: String?,
        )
    }

    /**
     * An empty object.
     *
     * https://developer.apple.com/documentation/notaryapi/submissionlogurlresponse/meta
     */
    @Serializable
    class Meta
}

@Serializable
@OptIn(ExperimentalSerializationApi::class)
@JsonClassDiscriminator("logFormatVersion")
sealed class Logs {
    @Serializable
    @SerialName("1")
    class V1(
        val logFormatVersion: Int,
        val jobId: String?,
        val status: SubmissionResponse.Status?,
        val statusSummary: String?,
        val statusCode: Int?,
        val archiveFilename: String?,
        val uploadDate: String?,
        val sha256: String?,
        val ticketContents: List? = emptyList(),
        val issues: List? = emptyList(),
    ) : Logs() {
        @Serializable
        data class TicketContent(
            val path: String?,
            val digestAlgorithm: String?,
            val cdhash: String?,
            val arch: String?,
        )

        @Serializable
        data class Issue(
            val severity: String?,
            val code: String?,
            val path: String?,
            val message: String?,
            val docUrl: String?,
            val architecture: String?,
        )
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy