### About Scalars

Scalars
are primitive values: `Int`

, `Float`

,
`String`

, `Boolean`

, or `ID`

.

When calling the GraphQL API, you must specify nested subfields until you return only scalars.

### BigInt

The `BigInt`

scalar type represents non-fractional whole numeric values.
`BigInt`

is not constrained to 32-bit like the `Int`

type and thus is a less
compatible type.

### Example

`1`

### Boolean

The `Boolean`

scalar type represents `true`

or `false`

.

### Example

`true`

### Example

`"2020-01-01T00:00:00.000Z"`

### Decimal

The `Decimal`

scalar type represents a python Decimal.

### Example

`1.0`

### Example

`UNKNOWN`

### Float

The `Float`

scalar type represents signed double-precision fractional values as specified by IEEE 754.

### Example

`1.0`

### FloatSafeDecimal

A subclass of the Decimal type which can handle floating point values gracefully by converting them to strings before trying to convert them to Decimals.

To see why this is valuable, consider the following python shell session where we construct Decimal values from floats and strings in turn:

initial_val = 20.6

Decimal(initial_val) Decimal('20.60000000000000142108547152020037174224853515625')

Decimal(str(initial_val)) Decimal('20.6')

- NOTE ON EDGE CASES FOR HIGH PRECISION INPUTS *

Note that cpython itself only retains up to 17 digits of precision for a float, and
disregards the rest, so if your *input* is a really big float, then this won't do you much
good, because:

str(float('1.11111111111111111111111111111111111111111111111')) '1.1111111111111112'

- whereas

str(Decimal('1.11111111111111111111111111111111111111111111111')) '1.11111111111111111111111111111111111111111111111'

But that's not really the problem this class is trying to help with. It's to help with what look like 'simple' numbers (like 20.2), which end up being converted to very long ones with a slightly different value when converted to a decimal.

### Example

`20.6`

### GenericScalar

The `GenericScalar`

scalar type represents a generic
GraphQL scalar value that could be:
String, Boolean, Int, Float, List or Object.

### Example

`"abc123" | 1 | 1.0 | true | ["abc123"] | AccountType`

### ID

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.

### Example

`"abc123"`

### Int

The `Int`

scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

### Example

`1`

### JSONString

Allows use of a JSON String for input / output from the GraphQL schema.

Use of this type is *not recommended* as you lose the benefits of having a defined, static
schema (one of the key benefits of GraphQL).

### Example

`{"key": "value"}`

### NormalizedDecimal

A subclass of the Decimal type that normalizes the value before converting it into a string.

For example, "4.000" will be converted to "4" and "4.100" will be converted to "4.1".

### Example

`UNKNOWN`

### String

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.

### Example

`"abc123"`

### TZAwareDateTime

The `TZAwareDateTime`

scalar type represents a DateTime value.

As specified by iso8601 and requires the datetime string to be timezone aware.

### Example

`UNKNOWN`

### UUID

Leverages the internal Python implementation of UUID (uuid.UUID) to provide native UUID objects in fields, resolvers and input.

### Example

`"500c164d-38c7-4f74-9ac6-be210197e9e4"`