kotlin_labs v0.7

Experimental directives supported by Apollo Kotlin

StatusDraft
Version0.7

This specification provides a list of directives supported by the Apollo Kotlin client. This specification is meant to be used as an incubator for new directives that are still being working on. As the directives mature and can be used by other clients/tools they will be moved to a separate feature‐focused specification.

1@requiresOptIn

"""
Indicates that the given field, argument, input field or enum value requires
giving explicit consent before being used.
Since: 3.3.1
"""
directive @requiresOptIn(feature: String!) repeatable
on FIELD_DEFINITION
    | ARGUMENT_DEFINITION
    | INPUT_FIELD_DEFINITION
    | ENUM_VALUE

2@targetName

"""
Use the specified name in the generated code instead of the GraphQL name.
Use this for instance when the name would clash with a reserved keyword or field in the generated code.
This directive is experimental.
Since: 3.3.1
"""
directive @targetName(name: String!)
on OBJECT
    | INTERFACE
    | ENUM
    | ENUM_VALUE
    | UNION
    | SCALAR
    | INPUT_OBJECT

3@map

"""
Configure the Apollo compiler to map the given scalar to the given class.
"""
directive @map(
  """
  The fully qualified type name to map the scalar to. 
  Simple generic types without variance or wildcards are also supported. 
  
  Examples: 
    - `java.util.Date`
    - `kotlin.collections.Map<kotlin.String, java.util.Date>`
  """
  to: String!, 

  """
  A fully qualified expression referencing the adapter used to adapt to/from the type
  or inline property type, or `null` to specify the adapter at runtime.
   
  Examples:
    - `com.apollographql.adapter.datetime.KotlinxInstantAdapter`
    - `com.example.MyAdapter()`
  """
  with: String = null, 
  
  """
  If non null, contains the name of the property used to wrap/unwrap the inline class.
  [to] must be an inline class.
  
  Only used in Kotlin codegen.
  """  
  inlineProperty: String = null
) on SCALAR

4@mapTo

"""
Use the given builtin type for this scalar.
"""
directive @mapTo(
  """
  The built-in type to use for this scalar.
  """
  builtIn: BuiltIn!, 
  """
  Whether to generate a wrapper inline class for this scalar.
  """
  inline: Boolean! = true
) on SCALAR

5BuiltIn

"""
Built-in types known at compile time. Apollo Kotlin knows the adapters for those types.
"""
enum BuiltIn { String, Boolean, Int, Long, Float, Double }

6@generateDataBuilders

"""
Tells the Apollo compiler to generate Data Builders
"""
directive @generateDataBuilders on SCHEMA

7@optional

"""
Marks a field or variable definition as optional or required
By default Apollo Kotlin generates all variables of nullable types as optional, in compliance with the GraphQL specification,
but this can be configured with this directive, because if the variable was added in the first place, it's usually to pass a value
Since: 3.0.0
"""
directive @optional(if: Boolean = true) on FIELD | VARIABLE_DEFINITION

§Index

  1. @generateDataBuilders
  2. @map
  3. @mapTo
  4. @optional
  5. @requiresOptIn
  6. @targetName
  7. BuiltIn
  1. 1@requiresOptIn
  2. 2@targetName
  3. 3@map
  4. 4@mapTo
  5. 5BuiltIn
  6. 6@generateDataBuilders
  7. 7@optional
  8. §Index