Modifier les annotations d'un dossier
Exemple d'implémentation pour modifier les annotations privées d'un dossier. Les annotations sont des champs visibles uniquement par les instructeurs.
Mis à jour
API_TOKEN="votre_token" DOSSIER_ID="l_id_du_dossier" INSTRUCTEUR_ID="l_id_de_l_instructeur" ANNOTATION_ID="l_id_de_l_annotation" ANNOTATION_VALUE="nouvelle_valeur" ruby modifierAnnotationTexte.rb# frozen_string_literal: true
require 'net/http'
require 'uri'
require 'json'
ENDPOINT = URI('https://demarche.numerique.gouv.fr/api/v2/graphql')
### that's the GraphQL part.
QUERY = <<~GRAPHQL_QUERY
mutation dossierModifierAnnotations($input: DossierModifierAnnotationsInput!) {
dossierModifierAnnotations(input: $input) {
annotations {
id
label
stringValue
updatedAt
}
errors {
message
}
}
}
GRAPHQL_QUERY
### that's the HTTP part
# open an http connexion to our GraphQL endpoint
def open_http_connection
http = Net::HTTP.new(ENDPOINT.host, ENDPOINT.port)
if ENDPOINT.scheme == 'https'
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
end
http
end
# the headers of our http query, include auth
def request_headers
{
"Content-Type" => "application/json",
"Authorization" => "Bearer #{ENV.fetch('API_TOKEN') { raise 'missing env var API_TOKEN' }}"
}
end
# given an http connexion, request the API
def modifier_annotation_texte(http)
# the data of our query
data = {
"query" => QUERY,
"operationName" => "dossierModifierAnnotations",
"variables" => {
"input": {
instructeurId: ENV.fetch('INSTRUCTEUR_ID') { raise 'missing env var INSTRUCTEUR_ID' },
dossierId: ENV.fetch('DOSSIER_ID') { raise 'missing env var DOSSIER_ID' },
annotations: [
{
id: ENV.fetch('ANNOTATION_ID') { raise 'missing env var ANNOTATION_ID' },
value: {
text: ENV.fetch('ANNOTATION_VALUE') { raise 'missing env var ANNOTATION_VALUE' }
}
}
]
}
}
}
# the HTTP format
req = Net::HTTP::Post.new(ENDPOINT, request_headers)
# the request body format
req.body = data.to_json
response = http.request(req)
data = JSON.parse(response.body)
data
end
http = open_http_connection
data = modifier_annotation_texte(http)
puts "Info: annotation(s) modifiée(s): #{data}"
# Modifier plusieurs annotations
data = {
"query" => QUERY,
"operationName" => "dossierModifierAnnotations",
"variables" => {
"input": {
instructeurId: ENV['INSTRUCTEUR_ID'],
dossierId: ENV['DOSSIER_ID'],
annotations: [
{
id: "annotation_date_id",
value: { date: "2024-12-25" }
},
{
id: "annotation_nombre_id",
value: { integerNumber: 42 }
},
{
id: "annotation_checkbox_id",
value: { checkbox: true }
}
]
}
}
}data = {
"query" => QUERY,
"operationName" => "dossierModifierAnnotations",
"variables" => {
"input": {
instructeurId: ENV['INSTRUCTEUR_ID'],
dossierId: ENV['DOSSIER_ID'],
annotations: [
{
id: "annotation_repetition_id",
value: { repetition: 3 } # Ajoute 3 nouvelles lignes
}
]
}
}
}