Suport

L'objecte Issue

Els tiquets representen els tiquets de suport creats per la teua organització. Cada tiquet té un estat, una prioritat i un historial d'activitats.

Atributs

idID

Identificador únic del tiquet.

friendlyIdInt

Número de tiquet llegible, seqüencial per organització.

titleStringnul·lable

Descripció breu del tiquet.

statusIssueStatus

Estat actual del cicle de vida del tiquet.

Possibles valors de l'enumeració IssueStatus
QUEUED_BACKLOGAjornat
QUEUED_READYPer iniciar
ONGOING_REQUESTEREsperant a el sol·licitant
ONGOING_ASSIGNEEEn mans de Nebux
ONGOING_REVIEWEn revisió per el sol·licitant
ONGOING_EXTERNALBloquejat
CLOSED_RESOLVEDResolt
CLOSED_DISMISSEDDescartat
priorityIssuePriority

Nivell de prioritat assignat al tiquet.

Possibles valors de l'enumeració IssuePriority
CRITICALCrítica
HIGHAlta
MEDIUMMitjana
LOWBaixa
summaryStringnul·lable

Descripció detallada del tiquet.

createdAtString

Marca de temps ISO 8601 de quan es va crear el tiquet.

updatedAtString

Marca de temps ISO 8601 de l'última actualització del tiquet.

lastActivityAtStringnul·lable

Marca de temps ISO 8601 de l'activitat més recent.

organizationOrganizationProfile

L'organització a què pertany este tiquet.

idID

Identificador únic de l'organització.

nameString

Nom visible de l'organització.

isVerifiedBoolean

Si l'organització ha sigut verificada.

participationsIssueParticipationConnection

Els usuaris implicats en el tiquet: el sol·licitant i els assignats. El node de cada aresta és un IssueParticipation amb:

idID

Identificador únic de la participació.

roleIssueParticipationRole

El rol de l'usuari en el tiquet.

Possibles valors de l'enumeració IssueParticipationRole
REQUESTERLa persona que va obrir el tiquet.
ASSIGNEEUn membre de l'equip de Nebux que atén el tiquet.
WATCHERSeguix el tiquet sense estar assignat.
NONESense un rol concret.
userUserProfile

L'usuari participant.

idID

Identificador únic de l'usuari.

firstNameString

El nom de l'usuari.

lastNameString

Els cognoms de l'usuari.

avatarUrlString

URL de la imatge d'avatar de l'usuari.

isStaffBoolean

Si l'usuari és membre de l'equip de Nebux.

firstActivityIssueActivitynul·lable

L'activitat d'obertura del ticket, normalment el primer missatge del sol·licitant.

inboundLinksIssueLinkConnection

Tickets que enllacen amb este. El node de cada edge és un IssueLink amb:

kindIssueLinkKind

El tipus de relació entre els dos tickets.

inboundIssueIdID

ID del ticket al costat entrant de l'enllaç.

outboundIssueIdID

ID del ticket al costat eixent de l'enllaç.

outboundLinksIssueLinkConnection

Tickets amb els quals enllaça este. El node de cada edge és un IssueLink amb:

kindIssueLinkKind

El tipus de relació entre els dos tickets.

inboundIssueIdID

ID del ticket al costat entrant de l'enllaç.

outboundIssueIdID

ID del ticket al costat eixent de l'enllaç.

RESPOSTA
{
  "id": "rprdbtyvc51ys7g7xq9xwra8cm",
  "friendlyId": 42,
  "title": "Cannot access billing dashboard",
  "status": "ONGOING_ASSIGNEE",
  "priority": "HIGH",
  "summary": "Getting a 403 Forbidden error when navigating to the billing section.",
  "createdAt": "2026-05-15T10:23:41Z",
  "updatedAt": "2026-05-15T14:07:22Z",
  "lastActivityAt": "2026-05-15T14:07:22Z",
  "organization": {
    "id": "k4p9m2vr8st1ynx7q3wzc5hjd6",
    "name": "Acme Corp"
  },
  "participations": {
    "edges": [
      {
        "node": {
          "id": "prt9k2m8vr4st1ynx7q3wzc5hd",
          "role": "REQUESTER",
          "user": {
            "id": "bm3pq9rv5wy2k8tn7xj4cs1hd0",
            "firstName": "Jane",
            "lastName": "Doe"
          }
        }
      }
    ]
  }
}
Consulta

Llista de tiquets

Retorna una llista paginada de tiquets per a una organització. Pots filtrar per estat o prioritat i ordenar per diversos camps.

Paràmetres

idIDobligatori

L'ID de l'organització els tiquets de la qual vols llistar.

firstIntopcional

Nombre de tiquets a retornar (per defecte 20, màxim 100).

afterCursoropcional

Cursor per a la paginació cap avant. Usa l'endCursor d'una resposta anterior.

where.statusIn[IssueStatus!]opcional

Filtra per un o més estats.

Possibles valors de l'enumeració IssueStatus
QUEUED_BACKLOGAjornat
QUEUED_READYPer iniciar
ONGOING_REQUESTEREsperant a el sol·licitant
ONGOING_ASSIGNEEEn mans de Nebux
ONGOING_REVIEWEn revisió per el sol·licitant
ONGOING_EXTERNALBloquejat
CLOSED_RESOLVEDResolt
CLOSED_DISMISSEDDescartat
where.priorityIn[IssuePriority!]opcional

Filtra per una o més prioritats.

Possibles valors de l'enumeració IssuePriority
CRITICALCrítica
HIGHAlta
MEDIUMMitjana
LOWBaixa
where.statusNotIn[IssueStatus!]opcional

Exclou un o més estats.

Possibles valors de l'enumeració IssueStatus
QUEUED_BACKLOGAjornat
QUEUED_READYPer iniciar
ONGOING_REQUESTEREsperant a el sol·licitant
ONGOING_ASSIGNEEEn mans de Nebux
ONGOING_REVIEWEn revisió per el sol·licitant
ONGOING_EXTERNALBloquejat
CLOSED_RESOLVEDResolt
CLOSED_DISMISSEDDescartat
where.priorityNotIn[IssuePriority!]opcional

Exclou una o més prioritats.

Possibles valors de l'enumeració IssuePriority
CRITICALCrítica
HIGHAlta
MEDIUMMitjana
LOWBaixa
where.titleContainsFoldStringopcional

Filtra pels tickets el títol dels quals continga este text (sense distingir majúscules).

orderBy.fieldIssueOrderFieldopcional

Camp pel qual ordenar.

Possibles valors de l'enumeració IssueOrderField
CREATED_ATCreat
LAST_ACTIVITY_ATÚltima activitat
PRIORITYPrioritat
orderBy.directionOrderDirectionopcional

Direcció d'ordenació.

Possibles valors de l'enumeració OrderDirection
ASCAscendent
DESCDescendent

Retorna

Retorna un objecte IssueConnection amb una llista d'arestes Issue, informació de paginació i el total.

Errors

NOT_FOUNDEl recurs no existix o la teua organització no hi pot accedir.
VALIDATIONL'entrada no complix les regles requerides (per exemple, un camp és massa llarg o un valor no està permés).
listIssues.ts
const res = await fetch("https://api.nebux.cloud", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer your-api-key",
  },
  body: JSON.stringify({
    query: `query ListIssues(
  $orgId: ID!
  $first: Int
  $after: Cursor
  $where: IssueWhereInput
  $orderBy: IssueOrder
) {
  organization(id: $orgId) {
    issues(
      first: $first
      after: $after
      where: $where
      orderBy: $orderBy
    ) {
      edges {
        node {
          id
          friendlyId
          title
          status
          priority
          createdAt
        }
      }
      pageInfo {
        hasNextPage
        endCursor
      }
      totalCount
    }
  }
}`,
    variables: {
      orgId: "k4p9m2vr8st1ynx7q3wzc5hjd6",
      first: 20,
      where: { statusIn: ["ONGOING_ASSIGNEE", "ONGOING_REVIEW"] },
    },
  }),
})
const { data } = await res.json()
RESPOSTA
{
  "data": {
    "organization": {
      "id": "k4p9m2vr8st1ynx7q3wzc5hjd6",
      "issues": {
        "edges": [
          {
            "node": {
              "id": "rprdbtyvc51ys7g7xq9xwra8cm",
              "friendlyId": 42,
              "title": "Cannot access billing dashboard",
              "status": "ONGOING_ASSIGNEE",
              "priority": "HIGH",
              "createdAt": "2026-05-15T10:23:41Z"
            }
          }
        ],
        "pageInfo": {
          "hasNextPage": false,
          "endCursor": null
        },
        "totalCount": 1
      }
    }
  }
}
Consulta

Recupera un tiquet

Recupera un tiquet individual pel seu ID, incloent la seua organització, participacions i historial complet d'activitats.

Paràmetres

idIDobligatori

L'ID del tiquet a recuperar.

Retorna

Retorna un objecte Issue.

Errors

NOT_FOUNDEl recurs no existix o la teua organització no hi pot accedir.
getIssue.ts
const res = await fetch("https://api.nebux.cloud", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer your-api-key",
  },
  body: JSON.stringify({
    query: `query GetIssue($id: ID!) {
  issue(id: $id) {
    id
    friendlyId
    title
    status
    priority
    summary
    createdAt
    updatedAt
    lastActivityAt
    organization {
      id
      name
    }
    participations(first: 20) {
      edges {
        node {
          id
          role
          user {
            id
            firstName
            lastName
            avatarUrl
          }
        }
      }
    }
  }
}`,
    variables: { id: "rprdbtyvc51ys7g7xq9xwra8cm" },
  }),
})
const { data } = await res.json()
RESPOSTA
{
  "data": {
    "issue": {
      "id": "rprdbtyvc51ys7g7xq9xwra8cm",
      "friendlyId": 42,
      "title": "Cannot access billing dashboard",
      "status": "ONGOING_ASSIGNEE",
      "priority": "HIGH",
      "summary": "Getting a 403 Forbidden error when navigating to the billing section.",
      "createdAt": "2026-05-15T10:23:41Z",
      "updatedAt": "2026-05-15T14:07:22Z",
      "lastActivityAt": "2026-05-15T14:07:22Z",
      "organization": {
        "id": "k4p9m2vr8st1ynx7q3wzc5hjd6",
        "name": "Acme Corp"
      },
      "participations": {
        "edges": [
          {
            "node": {
              "id": "prt9k2m8vr4st1ynx7q3wzc5hd",
              "role": "REQUESTER",
              "user": {
                "id": "bm3pq9rv5wy2k8tn7xj4cs1hd0",
                "firstName": "Jane",
                "lastName": "Doe",
                "avatarUrl": "https://..."
              }
            }
          }
        ]
      }
    }
  }
}
Mutació

Crea un tiquet

Obri un nou tiquet de suport en la teua organització. Per defecte s'encua per atendre's al més aviat possible (QUEUED_READY); passa un altre status per canviar-ho. Esta mutació no inclou cap missatge; per a publicar el primer, fes la mutació d'afegir un comentari.

Paràmetres

input.organizationIdIDobligatori

L'ID de l'organització en què es crearà el tiquet.

input.titleStringopcional

Descripció breu del tiquet (màxim 500 caràcters). Si s'omet, es genera un títol automàticament a partir de la conversa.

input.priorityIssuePriorityopcional

Prioritat inicial del tiquet.

Possibles valors de l'enumeració IssuePriority
CRITICALCríticaExclusivament per a incidències que afecten la disponibilitat del servei en producció; s'atén amb urgència. S'apliquen les tarifes de resposta a incidències segons el teu contracte.
HIGHAlta
MEDIUMMitjana
LOWBaixa
input.statusIssueStatusopcional

Quan s'ha d'atendre el tiquet.

Possibles valors de l'enumeració IssueStatus
QUEUED_READYper defecteL'equip de Nebux l'atendrà al més aviat possible.
QUEUED_BACKLOGL'afegirem al backlog fins que en canvies l'estat.

Retorna

Retorna un objecte IssueCreatePayload que conté l'Issue recentment creada.

Errors

VALIDATIONL'entrada no complix les regles requerides (per exemple, un camp és massa llarg o un valor no està permés).
INPUTL'entrada està mal formada o té un tipus incorrecte (per exemple, un ID mal format o falta un camp requerit).
NOT_FOUNDEl recurs no existix o la teua organització no hi pot accedir.
createIssue.ts
const res = await fetch("https://api.nebux.cloud", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer your-api-key",
  },
  body: JSON.stringify({
    query: `mutation CreateIssue($input: IssueCreateInput!) {
  issueCreate(input: $input) {
    issue {
      id
      friendlyId
      title
      status
      priority
      createdAt
    }
  }
}`,
    variables: {
      input: {
        organizationId: "k4p9m2vr8st1ynx7q3wzc5hjd6",
        title: "Cannot access billing dashboard",
        priority: "HIGH",
      },
    },
  }),
})
const { data } = await res.json()
RESPOSTA
{
  "data": {
    "issueCreate": {
      "issue": {
        "id": "np4kr7mt2vx9q8j3wz6ys1hcd5",
        "friendlyId": 43,
        "title": "Cannot access billing dashboard",
        "status": "QUEUED_READY",
        "priority": "HIGH",
        "createdAt": "2026-06-02T09:11:05Z"
      }
    }
  }
}
Mutació

Edita un tiquet

Actualitza els camps editables d'un dels teus tiquets. Com a sol·licitant no-staff pots canviar el títol, la prioritat i moure'l entre els dos estats en cua; la resta del cicle de vida la gestiona l'equip de Nebux.

Paràmetres

input.idIDobligatori

L'ID del tiquet a actualitzar.

input.titleStringopcional

Nova descripció breu del tiquet (màxim 500 caràcters).

input.priorityIssuePriorityopcional

Nova prioritat del tiquet.

Possibles valors de l'enumeració IssuePriority
HIGHAlta
MEDIUMMitjana
LOWBaixa
input.statusIssueStatusopcional

Canvia l'estat del tiquet. Cada valor només es pot establir des de certs estats actuals; consulta-ho davall.

Possibles valors de l'enumeració IssueStatus
QUEUED_READYQuan el tiquet està en la cua de pendents (QUEUED_BACKLOG), per a marcar-lo com a llest perquè l'equip l'atenga.
ONGOING_ASSIGNEEQuan el tiquet espera la teua resposta (ONGOING_REQUESTER), per a tornar-lo a l'equip de Nebux; o quan està en revisió (ONGOING_REVIEW), per a reobrir-lo com a no resolt encara.
CLOSED_RESOLVEDQuan el tiquet està en revisió (ONGOING_REVIEW), per a confirmar que està resolt.

Retorna

Retorna un objecte IssueUpdatePayload que conté l'Issue actualitzada.

Errors

NOT_FOUNDEl recurs no existix o la teua organització no hi pot accedir.
VALIDATIONL'entrada no complix les regles requerides (per exemple, un camp és massa llarg o un valor no està permés).
INPUTL'entrada està mal formada o té un tipus incorrecte (per exemple, un ID mal format o falta un camp requerit).
updateIssue.ts
const res = await fetch("https://api.nebux.cloud", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer your-api-key",
  },
  body: JSON.stringify({
    query: `mutation UpdateIssue($input: IssueUpdateInput!) {
  issueUpdate(input: $input) {
    issue {
      id
      friendlyId
      title
      status
      priority
      updatedAt
    }
  }
}`,
    variables: {
      input: {
        id: "rprdbtyvc51ys7g7xq9xwra8cm",
        title: "Cannot access billing dashboard (still blocked)",
        priority: "HIGH",
        status: "QUEUED_READY",
      },
    },
  }),
})
const { data } = await res.json()
RESPOSTA
{
  "data": {
    "issueUpdate": {
      "issue": {
        "id": "rprdbtyvc51ys7g7xq9xwra8cm",
        "friendlyId": 42,
        "title": "Cannot access billing dashboard (still blocked)",
        "status": "QUEUED_READY",
        "priority": "HIGH",
        "updatedAt": "2026-06-02T09:25:00Z"
      }
    }
  }
}

L'objecte IssueActivity

Les activitats componen l'historial d'un tiquet: comentaris, fitxers pujats, canvis de camps i entrades d'auditoria. Cada una porta una acció que indica de quin tipus d'entrada es tracta.

Atributs

idID

Identificador únic de l'activitat.

actionIssueActivityAction

El tipus d'activitat.

Possibles valors de l'enumeració IssueActivityAction
COMMENTUn comentari publicat en el tiquet.
FILEUn fitxer adjunt al tiquet. Opcionalment es pot incloure també un comentari.
FIELD_UPDATEUn canvi en un dels camps del tiquet.
commentStringnul·lable

Text del comentari, present quan l'acció és COMMENT.

commentEditedAtStringnul·lable

Marca de temps ISO 8601 de l'última edició del comentari, o null si mai no s'ha editat.

fileNameStringnul·lable

Nom del fitxer adjunt, present quan l'acció és FILE.

fileUrlStringnul·lable

URL de descàrrega del fitxer adjunt, present quan l'acció és FILE.

isBotBoolean

Si l'activitat ha sigut generada per un agent automatitzat.

isFeaturedBoolean

Si l'equip de Nebux ha destacat l'activitat.

createdAtString

Marca de temps ISO 8601 de quan es va crear l'activitat.

userUserProfilenul·lable

L'usuari que va produir l'activitat, o null per a usuaris del sistema o eliminats.

idID

Identificador únic de l'usuari.

firstNameString

El nom de l'usuari.

lastNameString

Els cognoms de l'usuari.

avatarUrlString

URL de la imatge d'avatar de l'usuari.

isStaffBoolean

Si l'usuari és membre de l'equip de Nebux.

reactionsIssueActivityReactionConnection

Reaccions (emoji) en l'activitat. El node de cada edge és un IssueActivityReaction amb:

bodyStringnul·lable

L'emoji de la reacció.

userUserProfile

L'usuari que ha reaccionat.

idID

Identificador únic de l'usuari.

firstNameString

El nom de l'usuari.

lastNameString

Els cognoms de l'usuari.

avatarUrlString

URL de la imatge d'avatar de l'usuari.

isStaffBoolean

Si l'usuari és membre de l'equip de Nebux.

RESPOSTA
{
  "id": "8m3kq7v2wr9yt4xn1p6cs0hjda",
  "action": "COMMENT",
  "comment": "We are looking into this now.",
  "commentEditedAt": null,
  "isBot": false,
  "createdAt": "2026-05-15T11:02:13Z",
  "user": {
    "id": "bm3pq9rv5wy2k8tn7xj4cs1hd0",
    "firstName": "Jane",
    "lastName": "Doe"
  }
}
Consulta

Llista d'activitats

Retorna l'historial d'activitat d'un tiquet —comentaris, fitxers pujats, canvis d'estat i entrades d'auditoria— en ordre cronològic.

Paràmetres

idIDobligatori

L'ID del tiquet les activitats del qual vols llistar.

firstIntopcional

Nombre d'activitats a retornar (per defecte 20, màxim 100).

afterCursoropcional

Cursor per a la paginació cap avant. Usa l'endCursor d'una resposta anterior.

where.commentContainsFoldStringopcional

Filtra per les activitats el comentari de les quals continga este text (sense distingir majúscules).

orderBy.fieldIssueActivityOrderFieldopcional

Camp pel qual ordenar les activitats.

Possibles valors de l'enumeració IssueActivityOrderField
CREATED_ATCreat
orderBy.directionOrderDirectionopcional

Direcció d'ordenació.

Possibles valors de l'enumeració OrderDirection
ASCAscendent
DESCDescendent

Retorna

Retorna un objecte IssueActivityConnection amb una llista d'arestes IssueActivity, informació de paginació i el total.

Errors

NOT_FOUNDEl recurs no existix o la teua organització no hi pot accedir.
listActivities.ts
const res = await fetch("https://api.nebux.cloud", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer your-api-key",
  },
  body: JSON.stringify({
    query: `query ListActivities($issueId: ID!, $first: Int, $after: Cursor) {
  issue(id: $issueId) {
    activities(
      first: $first
      after: $after
      orderBy: { field: CREATED_AT, direction: ASC }
    ) {
      edges {
        node {
          id
          action
          comment
          commentEditedAt
          isBot
          createdAt
          user {
            id
            firstName
            lastName
          }
        }
      }
      pageInfo {
        hasNextPage
        endCursor
      }
      totalCount
    }
  }
}`,
    variables: {
      issueId: "rprdbtyvc51ys7g7xq9xwra8cm",
      first: 20,
    },
  }),
})
const { data } = await res.json()
RESPOSTA
{
  "data": {
    "issue": {
      "activities": {
        "edges": [
          {
            "node": {
              "id": "8m3kq7v2wr9yt4xn1p6cs0hjda",
              "action": "COMMENT",
              "comment": "We are looking into this now.",
              "commentEditedAt": null,
              "isBot": false,
              "createdAt": "2026-05-15T11:02:13Z",
              "user": {
                "id": "bm3pq9rv5wy2k8tn7xj4cs1hd0",
                "firstName": "Jane",
                "lastName": "Doe"
              }
            }
          }
        ],
        "pageInfo": {
          "hasNextPage": false,
          "endCursor": null
        },
        "totalCount": 1
      }
    }
  }
}
Mutació

Afegir un comentari

Publica un comentari en un tiquet creant una activitat amb l'acció COMMENT. També pots adjuntar un fitxer usant l'acció FILE amb el camp file.

Paràmetres

input.issueIdIDobligatori

L'ID del tiquet on comentar.

input.actionIssueActivityActionobligatori

L'acció de l'activitat: COMMENT per a publicar un comentari, o FILE per a adjuntar un fitxer.

Possibles valors de l'enumeració IssueActivityAction
COMMENTUn comentari publicat en el tiquet.
FILEUn fitxer adjunt al tiquet. Opcionalment es pot incloure també un comentari.
input.commentStringopcional

El text del comentari (obligatori per a l'acció COMMENT).

input.fileUploadopcional

El fitxer a adjuntar (obligatori per a l'acció FILE). Les pujades de fitxers usen l'especificació multipart de GraphQL (multipart/form-data), no el cos JSON. Per a més informació, consulteu esta especificació.

Retorna

Retorna un objecte IssueActivityCreatePayload que conté la IssueActivity recentment creada.

Errors

NOT_FOUNDEl recurs no existix o la teua organització no hi pot accedir.
VALIDATIONL'entrada no complix les regles requerides (per exemple, un camp és massa llarg o un valor no està permés).
addComment.ts
const res = await fetch("https://api.nebux.cloud", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer your-api-key",
  },
  body: JSON.stringify({
    query: `mutation AddComment($input: IssueActivityCreateInput!) {
  issueActivityCreate(input: $input) {
    issueActivity {
      id
      action
      comment
      createdAt
    }
  }
}`,
    variables: {
      input: {
        issueId: "rprdbtyvc51ys7g7xq9xwra8cm",
        action: "COMMENT",
        comment: "Thanks for the update, still seeing the error.",
      },
    },
  }),
})
const { data } = await res.json()
RESPOSTA
{
  "data": {
    "issueActivityCreate": {
      "issueActivity": {
        "id": "8m3kq7v2wr9yt4xn1p6cs0hjda",
        "action": "COMMENT",
        "comment": "Thanks for the update, still seeing the error.",
        "createdAt": "2026-06-02T09:15:40Z"
      }
    }
  }
}
Mutació

Editar un comentari

Actualitza el text d'un comentari existent. Només l'autor pot editar els seus propis comentaris; commentEditedAt s'establix amb l'hora de l'edició.

Paràmetres

input.idIDobligatori

L'ID de l'activitat (comentari) a editar.

input.commentStringobligatori

El nou text del comentari.

Retorna

Retorna un objecte IssueActivityUpdatePayload que conté la IssueActivity actualitzada.

Errors

NOT_FOUNDEl recurs no existix o la teua organització no hi pot accedir.
VALIDATIONL'entrada no complix les regles requerides (per exemple, un camp és massa llarg o un valor no està permés).
editComment.ts
const res = await fetch("https://api.nebux.cloud", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer your-api-key",
  },
  body: JSON.stringify({
    query: `mutation EditComment($input: IssueActivityUpdateInput!) {
  issueActivityUpdate(input: $input) {
    issueActivity {
      id
      comment
      commentEditedAt
    }
  }
}`,
    variables: {
      input: {
        id: "8m3kq7v2wr9yt4xn1p6cs0hjda",
        comment: "Thanks for the update, the error is gone now.",
      },
    },
  }),
})
const { data } = await res.json()
RESPOSTA
{
  "data": {
    "issueActivityUpdate": {
      "issueActivity": {
        "id": "8m3kq7v2wr9yt4xn1p6cs0hjda",
        "comment": "Thanks for the update, the error is gone now.",
        "commentEditedAt": "2026-06-02T09:20:11Z"
      }
    }
  }
}