todo.sr.ht API Documentation

This is the GraphQL API documentation for the SourceHut service todo.sr.ht. It was generated from the service's GraphQL Schema definition.

To get started, also check out SourceHut's general GraphQL API conventions or try todo.sr.ht's GraphQL playground.

Queries

events

@access(scope:EVENTS, kind:RO)

List of events which the authenticated user is subscribed to or implicated in, ordered by the event date (recent events first).

Returns EventCursor

Arguments
  1. cursor - Cursor
Example Query
query events($cursor: Cursor) {
    events(cursor: $cursor) {
        results {
            ...Event
        }
        cursor
    }
}

me

@access(scope:PROFILE, kind:RO)

Returns the authenticated user.

Returns User!

Example Query
query me {
    me {
        id
        created
        updated
        canonicalName
        username
        email
        url
        location
        bio
        tracker {
            ...Tracker
        }
        trackers {
            ...TrackerCursor
        }
    }
}

subscriptions

@access(scope:SUBSCRIPTIONS, kind:RO)

List of subscriptions of the authenticated user.

Returns ActivitySubscriptionCursor

Arguments
  1. cursor - Cursor
Example Query
query subscriptions($cursor: Cursor) {
    subscriptions(cursor: $cursor) {
        results {
            ...ActivitySubscription
        }
        cursor
    }
}

trackers

@access(scope:TRACKERS, kind:RO)

Returns trackers that the authenticated user has access to.

NOTE: in this version of the API, only trackers owned by the authenticated user are returned, but in the future the default behavior will be to return all trackers that the user either (1) has been given explicit access to via ACLs or (2) has implicit access to either by ownership or group membership.

Returns TrackerCursor

Arguments
  1. cursor - Cursor
Example Query
query trackers($cursor: Cursor) {
    trackers(cursor: $cursor) {
        results {
            ...Tracker
        }
        cursor
    }
}

user

@access(scope:PROFILE, kind:RO)

Returns a specific user.

Returns User

Arguments
  1. username - String!
Example Query
query user($username: String!) {
    user(username: $username) {
        id
        created
        updated
        canonicalName
        username
        email
        url
        location
        bio
        tracker {
            ...Tracker
        }
        trackers {
            ...TrackerCursor
        }
    }
}

userWebhook

Returns details of a user webhook subscription by its ID.

Returns WebhookSubscription

Arguments
  1. id - Int!
Example Query
query userWebhook($id: Int!) {
    userWebhook(id: $id) {
        id
        events
        query
        url
        client {
            ...OAuthClient
        }
        deliveries {
            ...WebhookDeliveryCursor
        }
        sample
    }
}

userWebhooks

Returns a list of user webhook subscriptions. For clients authenticated with a personal access token, this returns all webhooks configured by all GraphQL clients for your account. For clients authenticated with an OAuth 2.0 access token, this returns only webhooks registered for your client.

Returns WebhookSubscriptionCursor!

Arguments
  1. cursor - Cursor
Example Query
query userWebhooks($cursor: Cursor) {
    userWebhooks(cursor: $cursor) {
        results {
            ...WebhookSubscription
        }
        cursor
    }
}

version

Returns API version information.

Returns Version!

Example Query
query version {
    version {
        major
        minor
        patch
        deprecationDate
    }
}

webhook

Returns information about the webhook currently being processed. This is not valid during normal queries over HTTP, and will return an error if used outside of a webhook context.

Returns WebhookPayload!

Example Query
query webhook {
    webhook {
        uuid
        event
        date
    }
}

Mutations

assignUser

@access(scope:TICKETS, kind:RW)

Adds a user to the list of assigned users for a ticket

Returns Event!

Arguments
  1. trackerId - Int!
  2. ticketId - Int!
  3. userId - Int!
Example Query
query assignUser($trackerId: Int!, $ticketId: Int!, $userId: Int!) {
    assignUser(trackerId: $trackerId, ticketId: $ticketId, userId: $userId) {
        id
        created
        changes {
            ...EventDetail
        }
        ticket {
            ...Ticket
        }
    }
}

createLabel

@access(scope:TRACKERS, kind:RW)

Creates a new ticket label for a tracker. The colors must be in CSS hexadecimal RGB format "#RRGGBB", i.e. "#000000" for black and "#FF0000" for red.

Returns Label!

Arguments
  1. trackerId - Int!
  2. name - String!
  3. foregroundColor - String!
  4. backgroundColor - String!
Example Query
query createLabel($trackerId: Int!, $name: String!, $foregroundColor: String!, $backgroundColor: String!) {
    createLabel(trackerId: $trackerId, name: $name, foregroundColor: $foregroundColor, backgroundColor: $backgroundColor) {
        id
        created
        name
        tracker {
            ...Tracker
        }
        backgroundColor
        foregroundColor
        tickets {
            ...TicketCursor
        }
    }
}

createTicketWebhook

Creates a new ticket webhook.

Returns WebhookSubscription!

Arguments
  1. trackerId - Int!
  2. ticketId - Int!
  3. config - TicketWebhookInput!
Example Query
query createTicketWebhook($trackerId: Int!, $ticketId: Int!, $config: TicketWebhookInput!) {
    createTicketWebhook(trackerId: $trackerId, ticketId: $ticketId, config: $config) {
        id
        events
        query
        url
        client {
            ...OAuthClient
        }
        deliveries {
            ...WebhookDeliveryCursor
        }
        sample
    }
}

createTracker

@access(scope:TRACKERS, kind:RW)

Creates a new bug tracker. If specified, the 'import' field specifies a gzipped dump of a tracker to populate tickets from; see Tracker.export.

Returns Tracker!

Arguments
  1. name - String!
  2. description - String
  3. visibility - Visibility!
  4. importUpload - Upload
Example Query
query createTracker($name: String!, $description: String, $visibility: Visibility!, $importUpload: Upload) {
    createTracker(name: $name, description: $description, visibility: $visibility, importUpload: $importUpload) {
        id
        created
        updated
        owner {
            ...Entity
        }
        name
        description
        visibility
        ticket {
            ...Ticket
        }
        tickets {
            ...TicketCursor
        }
        label {
            ...Label
        }
        labels {
            ...LabelCursor
        }
        subscription {
            ...TrackerSubscription
        }
        acl {
            ...ACL
        }
        defaultACL {
            ...DefaultACL
        }
        acls {
            ...ACLCursor
        }
        export
        webhooks {
            ...WebhookSubscriptionCursor
        }
        webhook {
            ...WebhookSubscription
        }
    }
}

createTrackerWebhook

Creates a new tracker webhook.

Returns WebhookSubscription!

Arguments
  1. trackerId - Int!
  2. config - TrackerWebhookInput!
Example Query
query createTrackerWebhook($trackerId: Int!, $config: TrackerWebhookInput!) {
    createTrackerWebhook(trackerId: $trackerId, config: $config) {
        id
        events
        query
        url
        client {
            ...OAuthClient
        }
        deliveries {
            ...WebhookDeliveryCursor
        }
        sample
    }
}

createUserWebhook

Creates a new user webhook subscription. When an event from the provided list of events occurs, the 'query' parameter (a GraphQL query) will be evaluated and the results will be sent to the provided URL as the body of an HTTP POST request. The list of events must include at least one event, and no duplicates.

This query is evaluated in the webhook context, such that query { webhook } may be used to access details of the event which trigged the webhook. The query may not make any mutations.

Returns WebhookSubscription!

Arguments
  1. config - UserWebhookInput!
Example Query
query createUserWebhook($config: UserWebhookInput!) {
    createUserWebhook(config: $config) {
        id
        events
        query
        url
        client {
            ...OAuthClient
        }
        deliveries {
            ...WebhookDeliveryCursor
        }
        sample
    }
}

deleteACL

@access(scope:ACLS, kind:RW)

Removes a tracker ACL. Following this change, the default tracker ACL will apply to this user.

Returns TrackerACL!

Arguments
  1. id - Int!
Example Query
query deleteACL($id: Int!) {
    deleteACL(id: $id) {
        id
        created
        tracker {
            ...Tracker
        }
        entity {
            ...Entity
        }
        browse
        submit
        comment
        edit
        triage
    }
}

deleteLabel

@access(scope:TRACKERS, kind:RW)

Deletes a label, removing it from any tickets which currently have it applied.

Returns Label!

Arguments
  1. id - Int!
Example Query
query deleteLabel($id: Int!) {
    deleteLabel(id: $id) {
        id
        created
        name
        tracker {
            ...Tracker
        }
        backgroundColor
        foregroundColor
        tickets {
            ...TicketCursor
        }
    }
}

deleteTicket

@access(scope:TICKETS, kind:RW)

Deletes a ticket.

Returns Ticket!

Arguments
  1. trackerId - Int!
  2. ticketId - Int!
Example Query
query deleteTicket($trackerId: Int!, $ticketId: Int!) {
    deleteTicket(trackerId: $trackerId, ticketId: $ticketId) {
        id
        created
        updated
        submitter {
            ...Entity
        }
        tracker {
            ...Tracker
        }
        ref
        subject
        body
        status
        resolution
        authenticity
        labels {
            ...Label
        }
        assignees {
            ...Entity
        }
        events {
            ...EventCursor
        }
        subscription {
            ...TicketSubscription
        }
        webhooks {
            ...WebhookSubscriptionCursor
        }
        webhook {
            ...WebhookSubscription
        }
    }
}

deleteTicketWebhook

Deletes a ticket webhook.

Returns WebhookSubscription!

Arguments
  1. id - Int!
Example Query
query deleteTicketWebhook($id: Int!) {
    deleteTicketWebhook(id: $id) {
        id
        events
        query
        url
        client {
            ...OAuthClient
        }
        deliveries {
            ...WebhookDeliveryCursor
        }
        sample
    }
}

deleteTracker

@access(scope:TRACKERS, kind:RW)

Deletes a bug tracker

Returns Tracker!

Arguments
  1. id - Int!
Example Query
query deleteTracker($id: Int!) {
    deleteTracker(id: $id) {
        id
        created
        updated
        owner {
            ...Entity
        }
        name
        description
        visibility
        ticket {
            ...Ticket
        }
        tickets {
            ...TicketCursor
        }
        label {
            ...Label
        }
        labels {
            ...LabelCursor
        }
        subscription {
            ...TrackerSubscription
        }
        acl {
            ...ACL
        }
        defaultACL {
            ...DefaultACL
        }
        acls {
            ...ACLCursor
        }
        export
        webhooks {
            ...WebhookSubscriptionCursor
        }
        webhook {
            ...WebhookSubscription
        }
    }
}

deleteTrackerWebhook

Deletes a tracker webhook.

Returns WebhookSubscription!

Arguments
  1. id - Int!
Example Query
query deleteTrackerWebhook($id: Int!) {
    deleteTrackerWebhook(id: $id) {
        id
        events
        query
        url
        client {
            ...OAuthClient
        }
        deliveries {
            ...WebhookDeliveryCursor
        }
        sample
    }
}

deleteUser

Deletes the authenticated user's account. Internal use only.

Returns Int!

Example Query
query deleteUser {
    deleteUser {
    }
}

deleteUserWebhook

Deletes a user webhook. Any events already queued may still be delivered after this request completes. Clients authenticated with a personal access token may delete any webhook registered for their account, but authorized OAuth 2.0 clients may only delete their own webhooks. Manually deleting a webhook configured by a third-party client may cause unexpected behavior with the third-party integration.

Returns WebhookSubscription!

Arguments
  1. id - Int!
Example Query
query deleteUserWebhook($id: Int!) {
    deleteUserWebhook(id: $id) {
        id
        events
        query
        url
        client {
            ...OAuthClient
        }
        deliveries {
            ...WebhookDeliveryCursor
        }
        sample
    }
}

importTrackerDump

@access(scope:TRACKERS, kind:RW)

Imports a gzipped JSON dump of tracker data

Returns Boolean!

Arguments
  1. trackerId - Int!
  2. dump - Upload!
Example Query
query importTrackerDump($trackerId: Int!, $dump: Upload!) {
    importTrackerDump(trackerId: $trackerId, dump: $dump) {
    }
}

labelTicket

@access(scope:TICKETS, kind:RW)

Adds a label to the list of labels for a ticket

Returns Event!

Arguments
  1. trackerId - Int!
  2. ticketId - Int!
  3. labelId - Int!
Example Query
query labelTicket($trackerId: Int!, $ticketId: Int!, $labelId: Int!) {
    labelTicket(trackerId: $trackerId, ticketId: $ticketId, labelId: $labelId) {
        id
        created
        changes {
            ...EventDetail
        }
        ticket {
            ...Ticket
        }
    }
}

submitComment

@access(scope:TICKETS, kind:RW)

Submits a comment for a ticket

Returns Event!

Arguments
  1. trackerId - Int!
  2. ticketId - Int!
  3. input - SubmitCommentInput!
Example Query
query submitComment($trackerId: Int!, $ticketId: Int!, $input: SubmitCommentInput!) {
    submitComment(trackerId: $trackerId, ticketId: $ticketId, input: $input) {
        id
        created
        changes {
            ...EventDetail
        }
        ticket {
            ...Ticket
        }
    }
}

submitCommentEmail

Returns Event!

Arguments
  1. trackerId - Int!
  2. ticketId - Int!
  3. input - SubmitCommentEmailInput!
Example Query
query submitCommentEmail($trackerId: Int!, $ticketId: Int!, $input: SubmitCommentEmailInput!) {
    submitCommentEmail(trackerId: $trackerId, ticketId: $ticketId, input: $input) {
        id
        created
        changes {
            ...EventDetail
        }
        ticket {
            ...Ticket
        }
    }
}

submitTicket

@access(scope:TICKETS, kind:RW)

Creates a new ticket.

Returns Ticket!

Arguments
  1. trackerId - Int!
  2. input - SubmitTicketInput!
Example Query
query submitTicket($trackerId: Int!, $input: SubmitTicketInput!) {
    submitTicket(trackerId: $trackerId, input: $input) {
        id
        created
        updated
        submitter {
            ...Entity
        }
        tracker {
            ...Tracker
        }
        ref
        subject
        body
        status
        resolution
        authenticity
        labels {
            ...Label
        }
        assignees {
            ...Entity
        }
        events {
            ...EventCursor
        }
        subscription {
            ...TicketSubscription
        }
        webhooks {
            ...WebhookSubscriptionCursor
        }
        webhook {
            ...WebhookSubscription
        }
    }
}

submitTicketEmail

Returns Ticket!

Arguments
  1. trackerId - Int!
  2. input - SubmitTicketEmailInput!
Example Query
query submitTicketEmail($trackerId: Int!, $input: SubmitTicketEmailInput!) {
    submitTicketEmail(trackerId: $trackerId, input: $input) {
        id
        created
        updated
        submitter {
            ...Entity
        }
        tracker {
            ...Tracker
        }
        ref
        subject
        body
        status
        resolution
        authenticity
        labels {
            ...Label
        }
        assignees {
            ...Entity
        }
        events {
            ...EventCursor
        }
        subscription {
            ...TicketSubscription
        }
        webhooks {
            ...WebhookSubscriptionCursor
        }
        webhook {
            ...WebhookSubscription
        }
    }
}

ticketSubscribe

@access(scope:SUBSCRIPTIONS, kind:RW)

Subscribes to all email notifications for a ticket

Returns TicketSubscription!

Arguments
  1. trackerId - Int!
  2. ticketId - Int!
Example Query
query ticketSubscribe($trackerId: Int!, $ticketId: Int!) {
    ticketSubscribe(trackerId: $trackerId, ticketId: $ticketId) {
        id
        created
        ticket {
            ...Ticket
        }
    }
}

ticketUnsubscribe

@access(scope:SUBSCRIPTIONS, kind:RW)

Unsubscribes from email notifications for a ticket

Returns TicketSubscription!

Arguments
  1. trackerId - Int!
  2. ticketId - Int!
Example Query
query ticketUnsubscribe($trackerId: Int!, $ticketId: Int!) {
    ticketUnsubscribe(trackerId: $trackerId, ticketId: $ticketId) {
        id
        created
        ticket {
            ...Ticket
        }
    }
}

trackerSubscribe

@access(scope:SUBSCRIPTIONS, kind:RW)

Subscribes to all email notifications for a tracker

Returns TrackerSubscription!

Arguments
  1. trackerId - Int!
Example Query
query trackerSubscribe($trackerId: Int!) {
    trackerSubscribe(trackerId: $trackerId) {
        id
        created
        tracker {
            ...Tracker
        }
    }
}

trackerUnsubscribe

@access(scope:SUBSCRIPTIONS, kind:RW)

Unsubscribes from email notifications for a tracker. If "tickets" is true, also unsubscribe from all tickets on this tracker.

Returns TrackerSubscription!

Arguments
  1. trackerId - Int!
  2. tickets - Boolean!
Example Query
query trackerUnsubscribe($trackerId: Int!, $tickets: Boolean!) {
    trackerUnsubscribe(trackerId: $trackerId, tickets: $tickets) {
        id
        created
        tracker {
            ...Tracker
        }
    }
}

unassignUser

@access(scope:TICKETS, kind:RW)

Removes a user from the list of assigned users for a ticket

Returns Event!

Arguments
  1. trackerId - Int!
  2. ticketId - Int!
  3. userId - Int!
Example Query
query unassignUser($trackerId: Int!, $ticketId: Int!, $userId: Int!) {
    unassignUser(trackerId: $trackerId, ticketId: $ticketId, userId: $userId) {
        id
        created
        changes {
            ...EventDetail
        }
        ticket {
            ...Ticket
        }
    }
}

unlabelTicket

@access(scope:TICKETS, kind:RW)

Removes a list from the list of labels for a ticket

Returns Event!

Arguments
  1. trackerId - Int!
  2. ticketId - Int!
  3. labelId - Int!
Example Query
query unlabelTicket($trackerId: Int!, $ticketId: Int!, $labelId: Int!) {
    unlabelTicket(trackerId: $trackerId, ticketId: $ticketId, labelId: $labelId) {
        id
        created
        changes {
            ...EventDetail
        }
        ticket {
            ...Ticket
        }
    }
}

updateLabel

@access(scope:TRACKERS, kind:RW)

Changes the name or colors for a label.

Returns Label!

Arguments
  1. id - Int!
  2. input - UpdateLabelInput!
Example Query
query updateLabel($id: Int!, $input: UpdateLabelInput!) {
    updateLabel(id: $id, input: $input) {
        id
        created
        name
        tracker {
            ...Tracker
        }
        backgroundColor
        foregroundColor
        tickets {
            ...TicketCursor
        }
    }
}

updateTicket

@access(scope:TICKETS, kind:RW)

Updates a ticket's subject or body

Returns Ticket!

Arguments
  1. trackerId - Int!
  2. ticketId - Int!
  3. input - UpdateTicketInput!
Example Query
query updateTicket($trackerId: Int!, $ticketId: Int!, $input: UpdateTicketInput!) {
    updateTicket(trackerId: $trackerId, ticketId: $ticketId, input: $input) {
        id
        created
        updated
        submitter {
            ...Entity
        }
        tracker {
            ...Tracker
        }
        ref
        subject
        body
        status
        resolution
        authenticity
        labels {
            ...Label
        }
        assignees {
            ...Entity
        }
        events {
            ...EventCursor
        }
        subscription {
            ...TicketSubscription
        }
        webhooks {
            ...WebhookSubscriptionCursor
        }
        webhook {
            ...WebhookSubscription
        }
    }
}

updateTicketStatus

@access(scope:TICKETS, kind:RW)

Updates the status or resolution of a ticket

Returns Event!

Arguments
  1. trackerId - Int!
  2. ticketId - Int!
  3. input - UpdateStatusInput!
Example Query
query updateTicketStatus($trackerId: Int!, $ticketId: Int!, $input: UpdateStatusInput!) {
    updateTicketStatus(trackerId: $trackerId, ticketId: $ticketId, input: $input) {
        id
        created
        changes {
            ...EventDetail
        }
        ticket {
            ...Ticket
        }
    }
}

updateTracker

@access(scope:TRACKERS, kind:RW)

Updates an existing bug tracker

Returns Tracker!

Arguments
  1. id - Int!
  2. input - TrackerInput!
Example Query
query updateTracker($id: Int!, $input: TrackerInput!) {
    updateTracker(id: $id, input: $input) {
        id
        created
        updated
        owner {
            ...Entity
        }
        name
        description
        visibility
        ticket {
            ...Ticket
        }
        tickets {
            ...TicketCursor
        }
        label {
            ...Label
        }
        labels {
            ...LabelCursor
        }
        subscription {
            ...TrackerSubscription
        }
        acl {
            ...ACL
        }
        defaultACL {
            ...DefaultACL
        }
        acls {
            ...ACLCursor
        }
        export
        webhooks {
            ...WebhookSubscriptionCursor
        }
        webhook {
            ...WebhookSubscription
        }
    }
}

updateTrackerACL

@access(scope:ACLS, kind:RW)

Updates the default ACL for a bug tracker, which applies to users and senders for whom a more specific ACL does not exist.

Returns DefaultACL!

Arguments
  1. trackerId - Int!
  2. input - ACLInput!
Example Query
query updateTrackerACL($trackerId: Int!, $input: ACLInput!) {
    updateTrackerACL(trackerId: $trackerId, input: $input) {
        browse
        submit
        comment
        edit
        triage
    }
}

updateUserACL

@access(scope:ACLS, kind:RW)

Adds or updates the ACL for a specific user on a bug tracker

Returns TrackerACL!

Arguments
  1. trackerId - Int!
  2. userId - Int!
  3. input - ACLInput!
Example Query
query updateUserACL($trackerId: Int!, $userId: Int!, $input: ACLInput!) {
    updateUserACL(trackerId: $trackerId, userId: $userId, input: $input) {
        id
        created
        tracker {
            ...Tracker
        }
        entity {
            ...Entity
        }
        browse
        submit
        comment
        edit
        triage
    }
}

Definitions

ACL

INTERFACE
Fields
  1. browse - Boolean!
    • Permission to view tickets
  2. submit - Boolean!
    • Permission to submit tickets
  3. comment - Boolean!
    • Permission to comment on tickets
  4. edit - Boolean!
    • Permission to edit tickets
  5. triage - Boolean!
    • Permission to resolve, re-open, transfer, or label tickets

ACLCursor

OBJECT

A cursor for enumerating access control list entries

If there are additional results available, the cursor object may be passed back into the same endpoint to retrieve another page. If the cursor is null, there are no remaining results to return.

Fields
  1. results - [TrackerACL]!
  2. cursor - Cursor

ACLInput

INPUT_OBJECT
Fields
  1. browse - Boolean!
    • Permission to view tickets
  2. submit - Boolean!
    • Permission to submit tickets
  3. comment - Boolean!
    • Permission to comment on tickets
  4. edit - Boolean!
    • Permission to edit tickets
  5. triage - Boolean!
    • Permission to resolve, re-open, transfer, or label tickets

AccessKind

ENUM
Enum Values
  1. RO
  2. RW

AccessScope

ENUM
Enum Values
  1. PROFILE
  2. TRACKERS
  3. TICKETS
  4. ACLS
  5. EVENTS
  6. SUBSCRIPTIONS

ActivitySubscription

INTERFACE
Fields
  1. id - Int!
  2. created - Time!

ActivitySubscriptionCursor

OBJECT

A cursor for enumerating subscriptions

If there are additional results available, the cursor object may be passed back into the same endpoint to retrieve another page. If the cursor is null, there are no remaining results to return.

Fields
  1. results - [ActivitySubscription]!
  2. cursor - Cursor

Assignment

OBJECT implements EventDetail
Fields
  1. eventType - EventType!
  2. ticket - Ticket!
  3. assigner - Entity!
  4. assignee - Entity!

Authenticity

ENUM
Enum Values
  1. AUTHENTIC
    • The server vouches for this information as entered verbatim by the attributed entity.
  2. UNAUTHENTICATED
    • The server does not vouch for this information as entered by the attributed entity, no authentication was provided.
  3. TAMPERED
    • The server has evidence that the information has likely been manipulated by a third party.

Boolean

SCALAR

The Boolean scalar type represents true or false.

Comment

OBJECT implements EventDetail
Fields
  1. eventType - EventType!
  2. ticket - Ticket!
  3. author - Entity!
  4. text - String!
  5. authenticity - Authenticity!
  6. supersededBy - Comment
    • If this comment has been edited, this field points to the new revision.

Created

OBJECT implements EventDetail
Fields
  1. eventType - EventType!
  2. ticket - Ticket!
  3. author - Entity!

Cursor

SCALAR

DefaultACL

OBJECT implements ACL

These ACL policies are applied non-specifically, e.g. the default ACL for all authenticated users.

Fields
  1. browse - Boolean!
  2. submit - Boolean!
  3. comment - Boolean!
  4. edit - Boolean!
  5. triage - Boolean!

EmailAddress

OBJECT implements Entity
Fields
  1. canonicalName - String!
  2. mailbox - String!
    • "jdoe@example.org" of "Jane Doe <jdoe@example.org>"
  3. name - String
    • "Jane Doe" of "Jane Doe <jdoe@example.org>"

EmailCmd

ENUM
Enum Values
  1. RESOLVE
  2. REOPEN
  3. LABEL
  4. UNLABEL

Entity

INTERFACE
Fields
  1. canonicalName - String!

Event

OBJECT

Represents an event which affects a ticket. Multiple changes can occur in a single event, and are enumerated in the "changes" field.

Fields
  1. id - Int!
  2. created - Time!
  3. changes - [EventDetail]!
  4. ticket - Ticket!

EventCreated

OBJECT implements WebhookPayload
Fields
  1. uuid - String!
  2. event - WebhookEvent!
  3. date - Time!
  4. newEvent - Event!

EventCursor

OBJECT

A cursor for enumerating events

If there are additional results available, the cursor object may be passed back into the same endpoint to retrieve another page. If the cursor is null, there are no remaining results to return.

Fields
  1. results - [Event]!
  2. cursor - Cursor

EventDetail

INTERFACE
Fields
  1. eventType - EventType!
  2. ticket - Ticket!

EventType

ENUM
Enum Values
  1. CREATED
  2. COMMENT
  3. STATUS_CHANGE
  4. LABEL_ADDED
  5. LABEL_REMOVED
  6. ASSIGNED_USER
  7. UNASSIGNED_USER
  8. USER_MENTIONED
  9. TICKET_MENTIONED

ExternalUser

OBJECT implements Entity
Fields
  1. canonicalName - String!
  2. externalId - String!
    • <service>:<service specific details...> e.g. github:ddevault
  3. externalUrl - String
    • The canonical external URL for this user, e.g. https://github.com/ddevault

Float

SCALAR

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

ID

SCALAR

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.

ImportInput

INPUT_OBJECT

This is used for importing tickets from third-party services, and may only be used by the tracker owner. It causes a ticket submission, update, or comment to be attributed to an external user and appear as if it were submitted at a specific time.

Fields
  1. created - Time!
  2. externalId - String!
    • External user ID. By convention this should be "service:username", e.g. "codeberg:ddevault".
  3. externalUrl - String!
    • A URL at which the user's external profile may be found, e.g. "https://codeberg.org/ddevault".

Int

SCALAR

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

Label

OBJECT
Fields
  1. id - Int!
  2. created - Time!
  3. name - String!
  4. tracker - Tracker!
  5. backgroundColor - String!
    • In CSS hexadecimal format
  6. foregroundColor - String!
  7. tickets(cursor: Cursor) - TicketCursor!

LabelCursor

OBJECT

A cursor for enumerating labels

If there are additional results available, the cursor object may be passed back into the same endpoint to retrieve another page. If the cursor is null, there are no remaining results to return.

Fields
  1. results - [Label]!
  2. cursor - Cursor

LabelEvent

OBJECT implements WebhookPayload
Fields
  1. uuid - String!
  2. event - WebhookEvent!
  3. date - Time!
  4. label - Label!

LabelUpdate

OBJECT implements EventDetail
Fields
  1. eventType - EventType!
  2. ticket - Ticket!
  3. labeler - Entity!
  4. label - Label!

OAuthClient

OBJECT
Fields
  1. uuid - String!

StatusChange

OBJECT implements EventDetail
Fields
  1. eventType - EventType!
  2. ticket - Ticket!
  3. editor - Entity!
  4. oldStatus - TicketStatus!
  5. newStatus - TicketStatus!
  6. oldResolution - TicketResolution!
  7. newResolution - TicketResolution!

String

SCALAR

The Stringscalar 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.

SubmitCommentEmailInput

INPUT_OBJECT
Fields
  1. text - String!
  2. senderId - Int!
  3. cmd - EmailCmd
  4. resolution - TicketResolution
  5. labelIds - [Int]
  6. messageId - String!

SubmitCommentInput

INPUT_OBJECT

You may omit the status or resolution fields to leave them unchanged (or if you do not have permission to change them). "resolution" is required if status is RESOLVED.

Fields
  1. text - String!
  2. status - TicketStatus
  3. resolution - TicketResolution
  4. import - ImportInput
    • For use by the tracker owner only

SubmitTicketEmailInput

INPUT_OBJECT
Fields
  1. subject - String!
  2. body - String
  3. senderId - Int!
  4. messageId - String!

SubmitTicketInput

INPUT_OBJECT
Fields
  1. subject - String!
  2. body - String
  3. created - Time
  4. externalId - String
  5. externalUrl - String

Ticket

OBJECT
Fields
  1. id - Int!
    • The ticket ID is unique within each tracker, but is not globally unique. The first ticket opened on a given tracker will have ID 1, then 2, and so on.
  2. created - Time!
  3. updated - Time!
  4. submitter - Entity!
  5. tracker - Tracker!
  6. ref - String!
    • Canonical ticket reference string; may be used in comments to identify the ticket from anywhere.
  7. subject - String!
  8. body - String
  9. status - TicketStatus!
  10. resolution - TicketResolution!
  11. authenticity - Authenticity!
  12. labels - [Label]!
  13. assignees - [Entity]!
  14. events(cursor: Cursor) - EventCursor!
  15. subscription - TicketSubscription
    • @access(scope:SUBSCRIPTIONS, kind:RO)
    • If the authenticated user is subscribed to this ticket, this is that subscription.
  16. webhooks(cursor: Cursor) - WebhookSubscriptionCursor!
    • Returns a list of ticket webhook subscriptions. For clients authenticated with a personal access token, this returns all webhooks configured by all GraphQL clients for your account. For clients authenticated with an OAuth 2.0 access token, this returns only webhooks registered for your client.
  17. webhook(id: Int!) - WebhookSubscription
    • Returns details of a ticket webhook subscription by its ID.

TicketCursor

OBJECT

A cursor for enumerating tickets

If there are additional results available, the cursor object may be passed back into the same endpoint to retrieve another page. If the cursor is null, there are no remaining results to return.

Fields
  1. results - [Ticket]!
  2. cursor - Cursor

TicketDeletedEvent

OBJECT implements WebhookPayload
Fields
  1. uuid - String!
  2. event - WebhookEvent!
  3. date - Time!
  4. trackerId - Int!
  5. ticketId - Int!

TicketEvent

OBJECT implements WebhookPayload
Fields
  1. uuid - String!
  2. event - WebhookEvent!
  3. date - Time!
  4. ticket - Ticket!

TicketMention

OBJECT implements EventDetail
Fields
  1. eventType - EventType!
  2. ticket - Ticket!
  3. author - Entity!
  4. mentioned - Ticket!

TicketResolution

ENUM
Enum Values
  1. UNRESOLVED
  2. CLOSED
  3. FIXED
  4. IMPLEMENTED
  5. WONT_FIX
  6. BY_DESIGN
  7. INVALID
  8. DUPLICATE
  9. NOT_OUR_BUG

TicketStatus

ENUM
Enum Values
  1. REPORTED
  2. CONFIRMED
  3. IN_PROGRESS
  4. PENDING
  5. RESOLVED

TicketSubscription

OBJECT implements ActivitySubscription

A ticket subscription will notify a participant when activity occurs on a ticket.

Fields
  1. id - Int!
  2. created - Time!
  3. ticket - Ticket!

TicketWebhookInput

INPUT_OBJECT
Fields
  1. url - String!
  2. events - [WebhookEvent]!
  3. query - String!

TicketWebhookSubscription

OBJECT implements WebhookSubscription
Fields
  1. id - Int!
  2. events - [WebhookEvent]!
  3. query - String!
  4. url - String!
  5. client - OAuthClient
  6. deliveries(cursor: Cursor) - WebhookDeliveryCursor!
  7. sample(event: WebhookEvent!) - String!
  8. ticket - Ticket!

Time

SCALAR

Tracker

OBJECT
Fields
  1. id - Int!
  2. created - Time!
  3. updated - Time!
  4. owner - Entity!
  5. name - String!
  6. description - String
  7. visibility - Visibility!
  8. ticket(id: Int!) - Ticket
  9. tickets(cursor: Cursor) - TicketCursor!
  10. label(name: String!) - Label
  11. labels(cursor: Cursor) - LabelCursor!
  12. subscription - TrackerSubscription
    • @access(scope:SUBSCRIPTIONS, kind:RO)
    • If the authenticated user is subscribed to this tracker, this is that subscription.
  13. acl - ACL
    • The access control list entry (or the default ACL) which describes the authenticated user's permissions with respect to this tracker.
  14. defaultACL - DefaultACL!
  15. acls(cursor: Cursor) - ACLCursor!
  16. export - URL!
    • Returns a URL from which the tracker owner may download a gzipped JSON archive of the tracker.
  17. webhooks(cursor: Cursor) - WebhookSubscriptionCursor!
    • Returns a list of tracker webhook subscriptions. For clients authenticated with a personal access token, this returns all webhooks configured by all GraphQL clients for your account. For clients authenticated with an OAuth 2.0 access token, this returns only webhooks registered for your client.
  18. webhook(id: Int!) - WebhookSubscription
    • Returns details of a tracker webhook subscription by its ID.

TrackerACL

OBJECT implements ACL

These ACLs are configured for specific entities, and may be used to expand or constrain the rights of a participant.

Fields
  1. id - Int!
  2. created - Time!
  3. tracker - Tracker!
  4. entity - Entity!
  5. browse - Boolean!
  6. submit - Boolean!
  7. comment - Boolean!
  8. edit - Boolean!
  9. triage - Boolean!

TrackerCursor

OBJECT

A cursor for enumerating trackers

If there are additional results available, the cursor object may be passed back into the same endpoint to retrieve another page. If the cursor is null, there are no remaining results to return.

Fields
  1. results - [Tracker]!
  2. cursor - Cursor

TrackerEvent

OBJECT implements WebhookPayload
Fields
  1. uuid - String!
  2. event - WebhookEvent!
  3. date - Time!
  4. tracker - Tracker!

TrackerInput

INPUT_OBJECT

You may omit any fields to leave them unchanged.

Fields
  1. name - String
  2. description - String
  3. visibility - Visibility

TrackerSubscription

OBJECT implements ActivitySubscription

A tracker subscription will notify a participant of all activity for a tracker, including all new tickets and their events.

Fields
  1. id - Int!
  2. created - Time!
  3. tracker - Tracker!

TrackerWebhookInput

INPUT_OBJECT
Fields
  1. url - String!
  2. events - [WebhookEvent]!
  3. query - String!

TrackerWebhookSubscription

OBJECT implements WebhookSubscription
Fields
  1. id - Int!
  2. events - [WebhookEvent]!
  3. query - String!
  4. url - String!
  5. client - OAuthClient
  6. deliveries(cursor: Cursor) - WebhookDeliveryCursor!
  7. sample(event: WebhookEvent!) - String!
  8. tracker - Tracker!

URL

SCALAR

UpdateLabelInput

INPUT_OBJECT

You may omit any fields to leave them unchanged.

Fields
  1. name - String
  2. foregroundColor - String
  3. backgroundColor - String

UpdateStatusInput

INPUT_OBJECT

"resolution" is required if status is RESOLVED.

Fields
  1. status - TicketStatus!
  2. resolution - TicketResolution
  3. import - ImportInput
    • For use by the tracker owner only

UpdateTicketInput

INPUT_OBJECT

You may omit any fields to leave them unchanged. To remove the ticket body, set it to null.

Fields
  1. subject - String
  2. body - String
  3. import - ImportInput
    • For use by the tracker owner only

Upload

SCALAR

User

OBJECT implements Entity
Fields
  1. id - Int!
  2. created - Time!
  3. updated - Time!
  4. canonicalName - String!
  5. username - String!
  6. email - String!
  7. url - String
  8. location - String
  9. bio - String
  10. tracker(name: String!) - Tracker
    • Returns a specific tracker.
  11. trackers(cursor: Cursor) - TrackerCursor!

UserMention

OBJECT implements EventDetail
Fields
  1. eventType - EventType!
  2. ticket - Ticket!
  3. author - Entity!
  4. mentioned - Entity!

UserWebhookInput

INPUT_OBJECT
Fields
  1. url - String!
  2. events - [WebhookEvent]!
  3. query - String!

UserWebhookSubscription

OBJECT implements WebhookSubscription
Fields
  1. id - Int!
  2. events - [WebhookEvent]!
  3. query - String!
  4. url - String!
  5. client - OAuthClient
  6. deliveries(cursor: Cursor) - WebhookDeliveryCursor!
  7. sample(event: WebhookEvent!) - String!

Version

OBJECT
Fields
  1. major - Int!
  2. minor - Int!
  3. patch - Int!
  4. deprecationDate - Time
    • If this API version is scheduled for deprecation, this is the date on which it will stop working; or null if this API version is not scheduled for deprecation.

Visibility

ENUM
Enum Values
  1. PUBLIC
  2. UNLISTED
  3. PRIVATE

WebhookDelivery

OBJECT
Fields
  1. uuid - String!
  2. date - Time!
  3. event - WebhookEvent!
  4. subscription - WebhookSubscription!
  5. requestBody - String!
  6. responseBody - String
    • These details are provided only after a response is received from the remote server. If a response is sent whose Content-Type is not text/*, or cannot be decoded as UTF-8, the response body will be null. It will be truncated after 64 KiB.
  7. responseHeaders - String
  8. responseStatus - Int

WebhookDeliveryCursor

OBJECT

A cursor for enumerating a list of webhook deliveries

If there are additional results available, the cursor object may be passed back into the same endpoint to retrieve another page. If the cursor is null, there are no remaining results to return.

Fields
  1. results - [WebhookDelivery]!
  2. cursor - Cursor

WebhookEvent

ENUM
Enum Values
  1. TRACKER_CREATED
  2. TRACKER_UPDATE
  3. TRACKER_DELETED
  4. TICKET_CREATED
  5. TICKET_UPDATE
  6. TICKET_DELETED
  7. LABEL_CREATED
  8. LABEL_UPDATE
  9. LABEL_DELETED
  10. EVENT_CREATED

WebhookPayload

INTERFACE
Fields
  1. uuid - String!
  2. event - WebhookEvent!
  3. date - Time!

WebhookSubscription

INTERFACE
Fields
  1. id - Int!
  2. events - [WebhookEvent]!
  3. query - String!
  4. url - String!
  5. client - OAuthClient
    • If this webhook was registered by an authorized OAuth 2.0 client, this field is non-null.
  6. deliveries(cursor: Cursor) - WebhookDeliveryCursor!
    • All deliveries which have been sent to this webhook.
  7. sample(event: WebhookEvent!) - String!
    • Returns a sample payload for this subscription, for testing purposes

WebhookSubscriptionCursor

OBJECT

A cursor for enumerating a list of webhook subscriptions

If there are additional results available, the cursor object may be passed back into the same endpoint to retrieve another page. If the cursor is null, there are no remaining results to return.

Fields
  1. results - [WebhookSubscription]!
  2. cursor - Cursor

Directives

@access

Decorates fields for which access requires a particular OAuth 2.0 scope with read or write access.

Arguments
  1. scope - AccessScope!
  2. kind - AccessKind!

@defer

Directs the executor to defer this fragment when the if argument is true or undefined.

Arguments
  1. if - Boolean
    • Deferred when true or undefined.
  2. label - String
    • Unique name

@deprecated

Marks an element of a GraphQL schema as no longer supported.

Arguments
  1. reason - String
    • Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).

@include

Directs the executor to include this field or fragment only when the if argument is true.

Arguments
  1. if - Boolean!
    • Included when true.

@internal

This is used to decorate fields which are for internal use, and are not available to normal API users.

@oneOf

Indicates exactly one field must be supplied and this field must not be null.

@private

This is used to decorate fields which are only accessible with a personal access token, and are not available to clients using OAuth 2.0 access tokens.

@scopehelp

Used to provide a human-friendly description of an access scope

Arguments
  1. details - String!

@skip

Directs the executor to skip this field or fragment when the if argument is true.

Arguments
  1. if - Boolean!
    • Skipped when true.

@specifiedBy

Exposes a URL that specifies the behavior of this scalar.

Arguments
  1. url - String!
    • The URL that specifies the behavior of this scalar.