enum ChangeType {
    BACKFILL
    CREATE
    DELETE
    DELIVERY
    UPDATE
}

enum ChangelogRecordsOrderByField {
    ID
}

type ChangelogCompositionMetadata {
    alternateTitles: [String!]!
    associatedGlobalSoundRecordings: [String!]!
    associatedLabelSoundRecordings: [String!]!
    containsPublicDomain: Boolean!
    containsSample: Boolean!
    deliveryDate: DateTime
    iswc: String
    pubSongID: Int!
    reDeliveryDate: DateTime
    submittedAt: DateTime
    title: String!
    vendorId: Int
}

type ChangelogPublisherMetadata {
    id: ID!
    ipi: String
    name: String
    pro: String
    pubPublisherID: Int!
}

type ChangelogAgreementMetadata {
    containsPublicDomain: Boolean!
    containsSample: Boolean!
    controlled: Boolean!
    hasArrangerContribution: Boolean!
    hasLyricsContribution: Boolean!
    hasMusicContribution: Boolean!
    id: ID!
    publisher: ChangelogPublisherMetadata
    split: String!
}

type ChangelogSongWriterMetadata {
    agreements: [ChangelogAgreementMetadata!]!
    id: ID!
    ipi: String
    legalName: String!
    pro: String
    professionallyKnownAs: [String!]!
    pubWriterID: Int!
}

type ChangelogRecord {
    changeType: ChangeType!
    compositionId: ID!
    compositionMetadata: ChangelogCompositionMetadata
    deleted: Boolean!
    delivered: Boolean!
    entityCreatedAt: DateTime!
    entityCreatedBy: String
    entityLastModifiedAt: DateTime!
    entityLastModifiedBy: String
    id: Int!
    recordTimestamp: DateTime!
    songwriterMetadata: [ChangelogSongWriterMetadata!]
}

type ChangelogRecordsResult {
    records: [ChangelogRecord!]!
    totalCount: Int!
}
