type Association {
  dateCreation: ISO8601Date!
  dateDeclaration: ISO8601Date!
  datePublication: ISO8601Date!
  objet: String!
  rna: String!
  titre: String!
}

type Avis {
  attachment: File
  dateQuestion: ISO8601DateTime!
  dateReponse: ISO8601DateTime
  expert: Profile
  id: ID!
  instructeur: Profile!
  question: String!
  reponse: String
}

"""
Represents non-fractional signed whole numeric values. Since the value may
exceed the size of a 32-bit integer, it's encoded as a string.
"""
scalar BigInt

type CarteChamp implements Champ {
  geoAreas: [GeoArea!]!
  id: ID!

  """
  Libellé du champ.
  """
  label: String!

  """
  La valeur du champ sous forme texte.
  """
  stringValue: String
}

interface Champ {
  id: ID!

  """
  Libellé du champ.
  """
  label: String!

  """
  La valeur du champ sous forme texte.
  """
  stringValue: String
}

type ChampDescriptor {
  """
  Description des champs d'un bloc répétable.
  """
  champDescriptors: [ChampDescriptor!]

  """
  Description du champ.
  """
  description: String
  id: ID!

  """
  Libellé du champ.
  """
  label: String!

  """
  List des options d'un champ avec selection.
  """
  options: [String!]

  """
  Est-ce que le champ est obligatoire ?
  """
  required: Boolean!

  """
  Type de la valeur du champ.
  """
  type: TypeDeChamp!
}

type CheckboxChamp implements Champ {
  id: ID!

  """
  Libellé du champ.
  """
  label: String!

  """
  La valeur du champ sous forme texte.
  """
  stringValue: String
  value: Boolean!
}

enum Civilite {
  """
  Monsieur
  """
  M

  """
  Madame
  """
  Mme
}

type CiviliteChamp implements Champ {
  id: ID!

  """
  Libellé du champ.
  """
  label: String!

  """
  La valeur du champ sous forme texte.
  """
  stringValue: String
  value: Civilite
}

"""
GeoJSON coordinates
"""
scalar Coordinates

"""
Autogenerated input type of CreateDirectUpload
"""
input CreateDirectUploadInput {
  """
  File size (bytes)
  """
  byteSize: Int!

  """
  MD5 file checksum as base64
  """
  checksum: String!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  File content type
  """
  contentType: String!

  """
  Dossier ID
  """
  dossierId: ID!

  """
  Original file name
  """
  filename: String!
}

"""
Autogenerated return type of CreateDirectUpload
"""
type CreateDirectUploadPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  directUpload: DirectUpload!
}

type DateChamp implements Champ {
  id: ID!

  """
  Libellé du champ.
  """
  label: String!

  """
  La valeur du champ sous forme texte.
  """
  stringValue: String
  value: ISO8601DateTime
}

type DecimalNumberChamp implements Champ {
  id: ID!

  """
  Libellé du champ.
  """
  label: String!

  """
  La valeur du champ sous forme texte.
  """
  stringValue: String
  value: Float
}

interface Demandeur {
  id: ID!
}

"""
Une demarche
"""
type Demarche {
  annotationDescriptors: [ChampDescriptor!]!
  champDescriptors: [ChampDescriptor!]!

  """
  Date de la création.
  """
  dateCreation: ISO8601DateTime!

  """
  Date de la dépublication.
  """
  dateDepublication: ISO8601DateTime

  """
  Date de la dernière modification.
  """
  dateDerniereModification: ISO8601DateTime!

  """
  Date de la fermeture.
  """
  dateFermeture: ISO8601DateTime

  """
  Date de la publication.
  """
  datePublication: ISO8601DateTime!

  """
  L'état de dossier pour une démarche déclarative
  """
  declarative: DossierDeclarativeState

  """
  Description de la démarche.
  """
  description: String!

  """
  Liste de tous les dossiers d'une démarche.
  """
  dossiers(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Si présent, permet de filtrer les dossiers archivés ou non
    """
    archived: Boolean

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Dossiers déposés depuis la date.
    """
    createdSince: ISO8601DateTime

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int

    """
    L'ordre des dossiers.
    """
    order: Order = ASC

    """
    Dossiers avec statut.
    """
    state: DossierState

    """
    Dossiers mis à jour depuis la date.
    """
    updatedSince: ISO8601DateTime
  ): DossierConnection!
  groupeInstructeurs: [GroupeInstructeur!]!
  id: ID!

  """
  Le numero de la démarche.
  """
  number: Int!
  service: Service!

  """
  L'état de la démarche.
  """
  state: DemarcheState!

  """
  Le titre de la démarche.
  """
  title: String!
}

enum DemarcheState {
  """
  Brouillon
  """
  brouillon

  """
  Close
  """
  close

  """
  Depubliee
  """
  depubliee

  """
  Publiée
  """
  publiee
}

"""
Represents direct upload credentials
"""
type DirectUpload {
  """
  Created blob record ID
  """
  blobId: ID!

  """
  HTTP request headers (JSON-encoded)
  """
  headers: String!

  """
  Created blob record signed ID
  """
  signedBlobId: ID!

  """
  Upload URL
  """
  url: String!
}

"""
Un dossier
"""
type Dossier {
  annotations: [Champ!]!
  archived: Boolean!
  avis: [Avis!]!
  champs: [Champ!]!

  """
  Date de la dernière modification.
  """
  dateDerniereModification: ISO8601DateTime!

  """
  Date de dépôt.
  """
  datePassageEnConstruction: ISO8601DateTime!

  """
  Date de passage en instruction.
  """
  datePassageEnInstruction: ISO8601DateTime

  """
  Date de traitement.
  """
  dateTraitement: ISO8601DateTime
  demandeur: Demandeur!
  groupeInstructeur: GroupeInstructeur!
  id: ID!
  instructeurs: [Profile!]!
  messages: [Message!]!
  motivation: String
  motivationAttachment: File

  """
  Le numero du dossier.
  """
  number: Int!

  """
  L'état du dossier.
  """
  state: DossierState!
  usager: Profile!
}

"""
Autogenerated input type of DossierAccepter
"""
input DossierAccepterInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  Dossier ID
  """
  dossierId: ID!

  """
  Instructeur qui prend la décision sur le dossier.
  """
  instructeurId: ID!
  justificatif: ID
  motivation: String
}

"""
Autogenerated return type of DossierAccepter
"""
type DossierAccepterPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  dossier: Dossier
  errors: [ValidationError!]
}

"""
Autogenerated input type of DossierChangerGroupeInstructeur
"""
input DossierChangerGroupeInstructeurInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  Dossier ID
  """
  dossierId: ID!

  """
  Group instructeur a affecter
  """
  groupeInstructeurId: ID!
}

"""
Autogenerated return type of DossierChangerGroupeInstructeur
"""
type DossierChangerGroupeInstructeurPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  dossier: Dossier
  errors: [ValidationError!]
}

"""
Autogenerated input type of DossierClasserSansSuite
"""
input DossierClasserSansSuiteInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  Dossier ID
  """
  dossierId: ID!

  """
  Instructeur qui prend la décision sur le dossier.
  """
  instructeurId: ID!
  justificatif: ID
  motivation: String!
}

"""
Autogenerated return type of DossierClasserSansSuite
"""
type DossierClasserSansSuitePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  dossier: Dossier
  errors: [ValidationError!]
}

"""
The connection type for Dossier.
"""
type DossierConnection {
  """
  A list of edges.
  """
  edges: [DossierEdge]

  """
  A list of nodes.
  """
  nodes: [Dossier]

  """
  Information to aid in pagination.
  """
  pageInfo: PageInfo!
}

enum DossierDeclarativeState {
  """
  Accepté
  """
  accepte

  """
  En instruction
  """
  en_instruction
}

"""
An edge in a connection.
"""
type DossierEdge {
  """
  A cursor for use in pagination.
  """
  cursor: String!

  """
  The item at the end of the edge.
  """
  node: Dossier
}

"""
Autogenerated input type of DossierEnvoyerMessage
"""
input DossierEnvoyerMessageInput {
  attachment: ID
  body: String!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  dossierId: ID!
  instructeurId: ID!
}

"""
Autogenerated return type of DossierEnvoyerMessage
"""
type DossierEnvoyerMessagePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  errors: [ValidationError!]
  message: Message
}

type DossierLinkChamp implements Champ {
  dossier: Dossier
  id: ID!

  """
  Libellé du champ.
  """
  label: String!

  """
  La valeur du champ sous forme texte.
  """
  stringValue: String
}

"""
Autogenerated input type of DossierPasserEnInstruction
"""
input DossierPasserEnInstructionInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  Dossier ID
  """
  dossierId: ID!

  """
  Instructeur qui prend la décision sur le dossier.
  """
  instructeurId: ID!
}

"""
Autogenerated return type of DossierPasserEnInstruction
"""
type DossierPasserEnInstructionPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  dossier: Dossier
  errors: [ValidationError!]
}

"""
Autogenerated input type of DossierRefuser
"""
input DossierRefuserInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  Dossier ID
  """
  dossierId: ID!

  """
  Instructeur qui prend la décision sur le dossier.
  """
  instructeurId: ID!
  justificatif: ID
  motivation: String!
}

"""
Autogenerated return type of DossierRefuser
"""
type DossierRefuserPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  dossier: Dossier
  errors: [ValidationError!]
}

enum DossierState {
  """
  Accepté
  """
  accepte

  """
  En construction
  """
  en_construction

  """
  En instruction
  """
  en_instruction

  """
  Refusé
  """
  refuse

  """
  Sans suite
  """
  sans_suite
}

type Effectif {
  nb: Float!
  periode: String!
}

type Entreprise {
  attestationFiscaleAttachment: File
  attestationSocialeAttachment: File
  capitalSocial: BigInt!
  codeEffectifEntreprise: String!
  dateCreation: ISO8601Date!

  """
  effectif moyen d'une année
  """
  effectifAnnuel: Effectif

  """
  effectif pour un mois donné
  """
  effectifMensuel: Effectif
  formeJuridique: String!
  formeJuridiqueCode: String!
  inlineAdresse: String!
  nom: String!
  nomCommercial: String!
  numeroTvaIntracommunautaire: String!
  prenom: String!
  raisonSociale: String!
  siren: String!
  siretSiegeSocial: String!
}

type File {
  byteSize: Int!
  checksum: String!
  contentType: String!
  filename: String!
  url: URL!
}

interface GeoArea {
  geometry: GeoJSON!
  id: ID!
  source: GeoAreaSource!
}

enum GeoAreaSource {
  """
  Parcelle cadastrale
  """
  cadastre

  """
  Quartier prioritaire
  """
  quartier_prioritaire

  """
  Sélection utilisateur
  """
  selection_utilisateur
}

type GeoJSON {
  coordinates: Coordinates!
  type: String!
}

"""
Un groupe instructeur
"""
type GroupeInstructeur {
  id: ID!
  instructeurs: [Profile!]!
  label: String!

  """
  Le numero du groupe instructeur.
  """
  number: Int!
}

"""
Un groupe instructeur avec ces dossiers
"""
type GroupeInstructeurWithDossiers {
  """
  Liste de tous les dossiers d'une démarche.
  """
  dossiers(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Returns the elements in the list that come before the specified cursor.
    """
    before: String

    """
    Dossiers déposés depuis la date.
    """
    createdSince: ISO8601DateTime

    """
    Returns the first _n_ elements from the list.
    """
    first: Int

    """
    Returns the last _n_ elements from the list.
    """
    last: Int

    """
    L'ordre des dossiers.
    """
    order: Order = ASC

    """
    Dossiers avec statut.
    """
    state: DossierState

    """
    Dossiers mis à jour depuis la date.
    """
    updatedSince: ISO8601DateTime
  ): DossierConnection!
  id: ID!
  instructeurs: [Profile!]!
  label: String!

  """
  Le numero du groupe instructeur.
  """
  number: Int!
}

"""
An ISO 8601-encoded date
"""
scalar ISO8601Date

"""
An ISO 8601-encoded datetime
"""
scalar ISO8601DateTime

type IntegerNumberChamp implements Champ {
  id: ID!

  """
  Libellé du champ.
  """
  label: String!

  """
  La valeur du champ sous forme texte.
  """
  stringValue: String
  value: BigInt
}

type LinkedDropDownListChamp implements Champ {
  id: ID!

  """
  Libellé du champ.
  """
  label: String!
  primaryValue: String
  secondaryValue: String

  """
  La valeur du champ sous forme texte.
  """
  stringValue: String
}

type Message {
  attachment: File
  body: String!
  createdAt: ISO8601DateTime!
  email: String!
  id: ID!
}

type MultipleDropDownListChamp implements Champ {
  id: ID!

  """
  Libellé du champ.
  """
  label: String!

  """
  La valeur du champ sous forme texte.
  """
  stringValue: String
  values: [String!]!
}

type Mutation {
  """
  File information required to prepare a direct upload
  """
  createDirectUpload(input: CreateDirectUploadInput!): CreateDirectUploadPayload

  """
  Accepter le dossier.
  """
  dossierAccepter(input: DossierAccepterInput!): DossierAccepterPayload

  """
  Changer le grope instructeur du dossier.
  """
  dossierChangerGroupeInstructeur(input: DossierChangerGroupeInstructeurInput!): DossierChangerGroupeInstructeurPayload

  """
  Classer le dossier sans suite.
  """
  dossierClasserSansSuite(input: DossierClasserSansSuiteInput!): DossierClasserSansSuitePayload

  """
  Envoyer un message à l'usager du dossier.
  """
  dossierEnvoyerMessage(input: DossierEnvoyerMessageInput!): DossierEnvoyerMessagePayload

  """
  Passer le dossier en instruction.
  """
  dossierPasserEnInstruction(input: DossierPasserEnInstructionInput!): DossierPasserEnInstructionPayload

  """
  Refuser le dossier.
  """
  dossierRefuser(input: DossierRefuserInput!): DossierRefuserPayload
}

enum Order {
  """
  L‘ordre ascendant.
  """
  ASC

  """
  L‘ordre descendant.
  """
  DESC
}

"""
Information about pagination in a connection.
"""
type PageInfo {
  """
  When paginating forwards, the cursor to continue.
  """
  endCursor: String

  """
  When paginating forwards, are there more items?
  """
  hasNextPage: Boolean!

  """
  When paginating backwards, are there more items?
  """
  hasPreviousPage: Boolean!

  """
  When paginating backwards, the cursor to continue.
  """
  startCursor: String
}

type ParcelleCadastrale implements GeoArea {
  codeArr: String!
  codeCom: String!
  codeDep: String!
  feuille: Int!
  geometry: GeoJSON!
  id: ID!
  nomCom: String!
  numero: String!
  section: String!
  source: GeoAreaSource!
  surfaceIntersection: Float!
  surfaceParcelle: Float!
}

type PersonneMorale implements Demandeur {
  adresse: String!
  association: Association
  codeInseeLocalite: String!
  codePostal: String!
  complementAdresse: String!
  entreprise: Entreprise
  id: ID!
  libelleNaf: String!
  localite: String!
  naf: String!
  nomVoie: String!
  numeroVoie: String!
  siegeSocial: Boolean!
  siret: String!
  typeVoie: String!
}

type PersonnePhysique implements Demandeur {
  civilite: Civilite
  dateDeNaissance: ISO8601Date
  id: ID!
  nom: String!
  prenom: String!
}

type PieceJustificativeChamp implements Champ {
  file: File
  id: ID!

  """
  Libellé du champ.
  """
  label: String!

  """
  La valeur du champ sous forme texte.
  """
  stringValue: String
}

type Profile {
  email: String!
  id: ID!
}

type QuartierPrioritaire implements GeoArea {
  code: String!
  commune: String!
  geometry: GeoJSON!
  id: ID!
  nom: String!
  source: GeoAreaSource!
}

type Query {
  """
  Informations concernant une démarche.
  """
  demarche(
    """
    Numéro de la démarche.
    """
    number: Int!
  ): Demarche!

  """
  Informations sur un dossier d'une démarche.
  """
  dossier(
    """
    Numéro du dossier.
    """
    number: Int!
  ): Dossier!

  """
  Informations sur un groupe instructeur.
  """
  groupeInstructeur(
    """
    Numéro du groupe instructeur.
    """
    number: Int!
  ): GroupeInstructeurWithDossiers!
}

type RepetitionChamp implements Champ {
  champs: [Champ!]!
  id: ID!

  """
  Libellé du champ.
  """
  label: String!

  """
  La valeur du champ sous forme texte.
  """
  stringValue: String
}

type SelectionUtilisateur implements GeoArea {
  geometry: GeoJSON!
  id: ID!
  source: GeoAreaSource!
}

type Service {
  id: ID!
  nom: String!
  organisme: String!
  typeOrganisme: TypeOrganisme!
}

type SiretChamp implements Champ {
  etablissement: PersonneMorale
  id: ID!

  """
  Libellé du champ.
  """
  label: String!

  """
  La valeur du champ sous forme texte.
  """
  stringValue: String
}

type TextChamp implements Champ {
  id: ID!

  """
  Libellé du champ.
  """
  label: String!

  """
  La valeur du champ sous forme texte.
  """
  stringValue: String
  value: String
}

enum TypeDeChamp {
  """
  Adresse
  """
  address

  """
  Carte
  """
  carte

  """
  Case à cocher
  """
  checkbox

  """
  Civilité
  """
  civilite

  """
  Communes
  """
  communes

  """
  Date
  """
  date

  """
  Date et Heure
  """
  datetime

  """
  Nombre décimal
  """
  decimal_number

  """
  Départements
  """
  departements

  """
  Lien vers un autre dossier
  """
  dossier_link

  """
  Choix parmi une liste
  """
  drop_down_list

  """
  Email
  """
  email

  """
  Engagement
  """
  engagement

  """
  Explication
  """
  explication

  """
  Titre de section
  """
  header_section

  """
  Nombre entier
  """
  integer_number

  """
  Deux menus déroulants liés
  """
  linked_drop_down_list

  """
  Choix multiples
  """
  multiple_drop_down_list

  """
  Nombre
  """
  number

  """
  Pays
  """
  pays

  """
  Téléphone
  """
  phone

  """
  Pièce justificative
  """
  piece_justificative

  """
  Régions
  """
  regions

  """
  Bloc répétable
  """
  repetition

  """
  SIRET
  """
  siret

  """
  Texte
  """
  text

  """
  Zone de texte
  """
  textarea

  """
  Oui/Non
  """
  yes_no
}

enum TypeOrganisme {
  """
  Administration centrale
  """
  administration_centrale

  """
  Association
  """
  association

  """
  Autre
  """
  autre

  """
  Collectivité territoriale
  """
  collectivite_territoriale

  """
  Établissement d’enseignement
  """
  etablissement_enseignement

  """
  Opérateur d’État
  """
  operateur_d_etat

  """
  Service déconcentré de l’État
  """
  service_deconcentre_de_l_etat
}

"""
A valid URL, transported as a string
"""
scalar URL

"""
Éreur de validation
"""
type ValidationError {
  """
  A description of the error
  """
  message: String!
}