type Query {
    "Get a list of Assets"
    assets(options: AssetListOptions): AssetList!
    "Get a single Asset by id"
    asset(id: ID!): Asset
}

type Mutation {
    "Create a new Asset"
    createAssets(input: [CreateAssetInput!]!): [CreateAssetResult!]!
    "Update an existing Asset"
    updateAsset(input: UpdateAssetInput!): Asset!
    "Delete an Asset"
    deleteAsset(input: DeleteAssetInput!): DeletionResponse!
    "Delete multiple Assets"
    deleteAssets(input: DeleteAssetsInput!): DeletionResponse!
    "Assign assets to channel"
    assignAssetsToChannel(input: AssignAssetsToChannelInput!): [Asset!]!
}

type MimeTypeError implements ErrorResult {
    errorCode: ErrorCode!
    message: String!
    fileName: String!
    mimeType: String!
}

union CreateAssetResult = Asset | MimeTypeError

# generated by generateListOptions function
input AssetListOptions {
    tags: [String!]
    tagsOperator: LogicalOperator
}

input AssetTranslationInput {
    id: ID
    languageCode: LanguageCode!
    name: String
}

input CreateAssetInput {
    file: Upload!
    tags: [String!]
    translations: [AssetTranslationInput!]
}

input CoordinateInput {
    x: Float!
    y: Float!
}

input DeleteAssetInput {
    assetId: ID!
    force: Boolean
    deleteFromAllChannels: Boolean
}

input DeleteAssetsInput {
    assetIds: [ID!]!
    force: Boolean
    deleteFromAllChannels: Boolean
}

input UpdateAssetInput {
    id: ID!
    name: String
    focalPoint: CoordinateInput
    tags: [String!]
    translations: [AssetTranslationInput!]
}

input AssignAssetsToChannelInput {
    assetIds: [ID!]!
    channelId: ID!
}
