type Query {
    facets(languageCode: LanguageCode, options: FacetListOptions): FacetList!
    facet(id: ID!, languageCode: LanguageCode): Facet
}

type Mutation {
    "Create a new Facet"
    createFacet(input: CreateFacetInput!): Facet!

    "Update an existing Facet"
    updateFacet(input: UpdateFacetInput!): Facet!

    "Delete an existing Facet"
    deleteFacet(id: ID!, force: Boolean): DeletionResponse!

    "Create one or more FacetValues"
    createFacetValues(input: [CreateFacetValueInput!]!): [FacetValue!]!

    "Update one or more FacetValues"
    updateFacetValues(input: [UpdateFacetValueInput!]!): [FacetValue!]!

    "Delete one or more FacetValues"
    deleteFacetValues(ids: [ID!]!, force: Boolean): [DeletionResponse!]!
}

# generated by generateListOptions function
input FacetListOptions

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

input CreateFacetInput {
    code: String!
    translations: [FacetTranslationInput!]!
    values: [CreateFacetValueWithFacetInput!]
}

input UpdateFacetInput {
    id: ID!
    code: String
    translations: [FacetTranslationInput!]
}
input FacetValueTranslationInput {
    id: ID
    languageCode: LanguageCode!
    name: String
}

input CreateFacetValueWithFacetInput {
    code: String!
    translations: [FacetValueTranslationInput!]!
}

input CreateFacetValueInput {
    facetId: ID!
    code: String!
    translations: [FacetValueTranslationInput!]!
}

input UpdateFacetValueInput {
    id: ID!
    code: String
    translations: [FacetValueTranslationInput!]
}
