# 📋 GraphQL-only Options

## 📋 Options

| Option | Description |
|--------|-------------|
| [`--graphql-no-typename`](#graphql-no-typename) | Exclude __typename field from generated GraphQL models. |

---

## 🍳 Recipes

### Trim GraphQL metadata fields

Skip injected typename fields when generated models should expose only business data.

**Options:** [`--graphql-no-typename`](#graphql-no-typename)

---

## `--graphql-no-typename` {#graphql-no-typename}

Exclude __typename field from generated GraphQL models.

The `--graphql-no-typename` flag prevents the generator from adding the
`typename__` field (aliased to `__typename`) to generated models. This is
useful when using generated models for GraphQL mutations, as servers typically
don't expect this field in input data.

!!! tip "Usage"

    ```bash
    datamodel-codegen --input schema.json --graphql-no-typename # (1)!
    ```

    1. :material-arrow-left: `--graphql-no-typename` - the option documented here

??? example "Examples"

    **Input Schema:**

    ```graphql
    type Book {
      id: ID!
      title: String
    }
    
    interface Node {
      id: ID!
    }
    
    input BookInput {
      title: String!
    }
    ```

    **Output:**

    ```python
    # generated by datamodel-codegen:
    #   filename:  no-typename.graphql
    #   timestamp: 2019-07-26T00:00:00+00:00

    from __future__ import annotations

    from pydantic import BaseModel
    from typing_extensions import TypeAliasType

    Boolean = TypeAliasType("Boolean", bool)
    """
    The `Boolean` scalar type represents `true` or `false`.
    """


    ID = TypeAliasType("ID", str)
    """
    The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID.
    """


    String = TypeAliasType("String", str)
    """
    The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
    """


    class Node(BaseModel):
        id: ID


    class Book(BaseModel):
        id: ID
        title: String | None = None


    class BookInput(BaseModel):
        title: String
    ```

---
