Edworking API Reference
Home Get started free

Edworking API

Build custom integrations and apps on top of Edworking with a single GraphQL endpoint for tasks, projects, files, messages, and time tracking.

10
Queries
24
Mutations
23
Types

Overview

Get started

The Edworking API is a single GraphQL endpoint. Send all queries and mutations as POST requests to:

Endpoint: https://gateway.edworking.com/

Every request must include a valid access token in the Authorization header. See Authentication to obtain one.

What is GraphQL?

GraphQL lets you request exactly the data you need, and nothing more, in a single call. Instead of stitching together multiple REST endpoints, you describe the shape of the response and the server returns it.

All operations are validated against the Edworking schema. Use this reference to discover the available queries, mutations, and types.

Authentication

All API requests require a valid Edworking access token, sent as Authorization: Bearer <token>.

Recommended. Using a manually generated API token has some drawbacks, so it may not be the most suitable authentication method. Instead, generate the token dynamically during login, so it is created automatically from the user's email and password rather than being manually created and stored.

Generate a token during login

fetch('https://gateway.edworking.com/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    operationName: 'Login',
    query: `
      mutation Login($email: String!, $password: String!, $project: ID) {
        login(email: $email, password: $password, project: $project) {
          token
          user { id }
        }
      }
    `,
    variables: { email, password },
  }),
})
  .then((response) => response.json())
  .then(({ data }) => {
    const edworkingToken = data.login.token
    // Use edworkingToken in the Authorization header:
    // Authorization: Bearer <token>
  })

Personal token (alternative)

Any Edworking user can generate a personal token:

  • Click your avatar in the top-right corner and select Preferences.
  • Open the Admin tab.
  • Under API Token, click Copy Token.

Query example

Once you have a token, include it in the Authorization header and send your query:

fetch('https://gateway.edworking.com/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${edworkingToken}`,
  },
  body: JSON.stringify({
    query: 'query GetProjects { getProjects { id name } }',
  }),
})
  .then((response) => response.json())
  .then(({ data }) => {
    const projects = data.getProjects
  })

Queries

getFiles

Query #
getFiles(project: ID, task: ID, privat: ID, inquiry: ID, category: String, portfolio: ID, folder: ID): [File]

Arguments

ArgumentType
project ID Optional
task ID Optional
privat ID Optional
inquiry ID Optional
category String Optional
portfolio ID Optional
folder ID Optional

Returns

[File]

getFolders

Query #
getFolders(project: ID!, folder: ID): [Folder]

Arguments

ArgumentType
project ID! Required
folder ID Optional

Returns

[Folder]

getMessages

Query #
getMessages(project: ID, invitation: ID, task: ID, meetingroom: ID, privat: ID, inquiry: ID, first: Int): [Message]

Arguments

ArgumentType
project ID Optional
invitation ID Optional
task ID Optional
meetingroom ID Optional
privat ID Optional
inquiry ID Optional
first Int Optional

Returns

[Message]

getMessagesStates

Query #
getMessagesStates(project: ID): [Message]

Arguments

ArgumentType
project ID Optional

Returns

[Message]

getNotifications

Query #
getNotifications(project: ID, first: Int, after: Int): [Notification]

Arguments

ArgumentType
project ID Optional
first Int Optional
after Int Optional

Returns

[Notification]

getProjects

Query #
getProjects: [Project!]

Arguments

No arguments.

Returns

[Project!]

getStatesProject

Query #
getStatesProject(project: ID): [StateProject]

Arguments

ArgumentType
project ID Optional

Returns

[StateProject]

getTask

Query #
getTask(id: ID!): Task!

Arguments

ArgumentType
id ID! Required

Returns

Task!

getTasks

Query #
getTasks(project: ID, first: Int): [Task!]

Arguments

ArgumentType
project ID Optional
first Int Optional

Returns

[Task!]

getUsers

Query #
getUsers(project: ID, task: ID, inactive: Boolean): [User!]

Arguments

ArgumentType
project ID Optional
task ID Optional
inactive Boolean Optional

Returns

[User!]

Mutations

addTimeEntry

Mutation #
addTimeEntry(task: ID!, duration: Int!, startTime: DateTime!, description: String): TrackingTime!

Arguments

ArgumentType
task ID! Required
duration Int! Required
startTime DateTime! Required
description String Optional

Returns

TrackingTime!

createState

Mutation #
createState(value: String, position: Int, project: ID): StateProject

Arguments

ArgumentType
value String Optional
position Int Optional
project ID Optional

Returns

StateProject

deleteState

Mutation #
deleteState(state: ID!): StateProject

Arguments

ArgumentType
state ID! Required

Returns

StateProject

delFile

Mutation #
delFile(file: ID!): File!

Arguments

ArgumentType
file ID! Required

Returns

File!

delFolder

Mutation #
delFolder(folder: ID!): Folder!

Arguments

ArgumentType
folder ID! Required

Returns

Folder!

delProject

Mutation #
delProject(project: ID!): Project!

Arguments

ArgumentType
project ID! Required

Returns

Project!

delTask

Mutation #
delTask(task: ID!, delSubtasks: Boolean): Task!

Arguments

ArgumentType
task ID! Required
delSubtasks Boolean Optional

Returns

Task!

duplicateTask

Mutation #
duplicateTask(task: ID!): Task!

Arguments

ArgumentType
task ID! Required

Returns

Task!

ediFile

Mutation #
ediFile(file: ID!, shared: Boolean): File!

Arguments

ArgumentType
file ID! Required
shared Boolean Optional

Returns

File!

ediFolder

Mutation #
ediFolder(name: String!, folder: ID): Folder!

Arguments

ArgumentType
name String! Required
folder ID Optional

Returns

Folder!

ediProjectBasic

Mutation #
ediProjectBasic(id: ID!, name: String, logo: String, employees: [Employee], color: String): Project!

Arguments

ArgumentType
id ID! Required
name String Optional
logo String Optional
employees [Employee] Optional
color String Optional

Returns

Project!

ediTask

Mutation #
ediTask(id: ID!, state: ID, name: String, users: [ID!], description: String, project: ID!, color: String, logo: String, cover: String, length: LengthInput, files: [FileInput], deadline: DateTime): Task!

Arguments

ArgumentType
id ID! Required
state ID Optional
name String Optional
users [ID!] Optional
description String Optional
project ID! Required
color String Optional
logo String Optional
cover String Optional
length LengthInput Optional
files [FileInput] Optional
deadline DateTime Optional

Returns

Task!

ediUserBasic

Mutation #
ediUserBasic(id: ID!, firstname: String!, lastname: String!, email: String!, password: String!, profileImg: String): AuthPayload!

Arguments

ArgumentType
id ID! Required
firstname String! Required
lastname String! Required
email String! Required
password String! Required
profileImg String Optional

Returns

AuthPayload!

login

Mutation #
login(email: String!, password: String!, project: ID): AuthPayload

Arguments

ArgumentType
email String! Required
password String! Required
project ID Optional

Returns

AuthPayload

loginApple

Mutation #
loginApple(token: String!, project: ID, updateId: ID, invited: ID, promotion: Int, code: String): AuthPayload!

Arguments

ArgumentType
token String! Required
project ID Optional
updateId ID Optional
invited ID Optional
promotion Int Optional
code String Optional

Returns

AuthPayload!

loginGoogle

Mutation #
loginGoogle(token: String!, project: ID, updateId: ID, invited: ID, promotion: Int, code: String): AuthPayload!

Arguments

ArgumentType
token String! Required
project ID Optional
updateId ID Optional
invited ID Optional
promotion Int Optional
code String Optional

Returns

AuthPayload!

removeTimeEntry

Mutation #
removeTimeEntry(id: ID!): TrackingTime!

Arguments

ArgumentType
id ID! Required

Returns

TrackingTime!

setFile

Mutation #
setFile(folder: ID, duration: Int, base64: String, gif: String, name: String!, code: String!, type: String!, size: Float!, freelancer: ID, project: ID, task: ID, privat: ID, inquiry: ID, location: String!, category: String): File!

Arguments

ArgumentType
folder ID Optional
duration Int Optional
base64 String Optional
gif String Optional
name String! Required
code String! Required
type String! Required
size Float! Required
freelancer ID Optional
project ID Optional
task ID Optional
privat ID Optional
inquiry ID Optional
location String! Required
category String Optional

Returns

File!

setFolder

Mutation #
setFolder(name: String!, project: ID!, level: Int, task: ID, folder: ID): Folder!

Arguments

ArgumentType
name String! Required
project ID! Required
level Int Optional
task ID Optional
folder ID Optional

Returns

Folder!

setMessage

Mutation #
setMessage(id: ID, body: String, project: ID, meetingroom: ID, privat: ID, task: ID, inquiry: ID, file: ID, type: String, entities: [EntityInput]): Message!

Arguments

ArgumentType
id ID Optional
body String Optional
project ID Optional
meetingroom ID Optional
privat ID Optional
task ID Optional
inquiry ID Optional
file ID Optional
type String Optional
entities [EntityInput] Optional

Returns

Message!

setProject

Mutation #
setProject(name: String!, users: [ID!], newusers: [Employee], description: String, logo: String, color: String): Project!

Arguments

ArgumentType
name String! Required
users [ID!] Optional
newusers [Employee] Optional
description String Optional
logo String Optional
color String Optional

Returns

Project!

setTask

Mutation #
setTask(state: ID, name: String, users: [ID!], description: String, project: ID!, logo: String, color: String, cover: String, length: LengthInput, files: [FileInput], edworkers: [ID], deadline: DateTime): Task!

Arguments

ArgumentType
state ID Optional
name String Optional
users [ID!] Optional
description String Optional
project ID! Required
logo String Optional
color String Optional
cover String Optional
length LengthInput Optional
files [FileInput] Optional
edworkers [ID] Optional
deadline DateTime Optional

Returns

Task!

updateState

Mutation #
updateState(state: ID!, position: Int, icon: Int, value: String): StateProject

Arguments

ArgumentType
state ID! Required
position Int Optional
icon Int Optional
value String Optional

Returns

StateProject

updateStates

Mutation #
updateStates(ids: [ID], positions: [Int]): Boolean

Arguments

ArgumentType
ids [ID] Optional
positions [Int] Optional

Returns

Boolean

Types

Auth

Object #
FieldType
id ID Optional
token String Optional
used Boolean Optional
expires DateTime Optional

AuthPayload

Object #
FieldType
token String Optional
user User Optional

Chat

Object #
FieldType
totalCount Int Optional
pageInfo PageInfo Optional
name String Optional
logo String Optional
color String Optional
messages [Message!] Optional
users [User!] Optional

Entity

Object #
FieldType
id ID Optional
type String Optional
idMention String Optional
start Int Optional
end Int Optional
label String Optional

File

Object #
FieldType
id ID! Required
name String! Required
code String! Required
type String! Required
available Boolean Optional
shared Boolean Optional
duration Int Optional
folder Folder Optional
base64 String Optional
gif String Optional
location String! Required
size Float! Required
url String Optional
author User Optional
category String Optional
viewed [User] Optional
view Boolean Optional
project Project Optional
message Message Optional
freelancer User Optional
task Task Optional
notification Notification Optional
createdAt DateTime Optional
updatedAt DateTime Optional

Folder

Object #
FieldType
id ID! Required
name String Optional
level Int Optional
createdAt DateTime Optional
updatedAt DateTime Optional
upfolder Folder Optional
downfolders [Folder] Optional
task Task Optional
author User Optional
project Project Optional

Length

Object #
FieldType
id ID Optional
days Int! Required
hours Int! Required
weeks Int! Required

Message

Object #
FieldType
id ID! Required
body String Optional
author User Optional
type String Optional
subtype String Optional
file File Optional
project Project Optional
task Task Optional
pending [User!] Optional
entities [Entity] Optional
cursor String Optional
createdAt DateTime Optional
updatedAt DateTime Optional

Notification

Object #
FieldType
id ID! Required
type String Optional
author User Optional
read Boolean Optional
marked Boolean Optional
project Project Optional
file File Optional
task Task Optional
event Event Optional
user User! Required
description String Optional
createdAt DateTime Optional
updatedAt DateTime Optional

PageInfo

Object #
FieldType
endCursor String Optional
hasNextPage Boolean Optional

Project

Object #
FieldType
id ID! Required
name String Optional
logo String Optional
color String Optional
admins [User] Optional
folders [Folder] Optional
states [String] Optional
statesProject [StateProject] Optional
files [File!] Optional
cusers [User!] Optional
users [User!] Optional
pending [User!] Optional
author User Optional
tasks [Task!] Optional
messages [Message!] Optional
notifications [Notification] Optional
createdAt DateTime Optional
updatedAt DateTime Optional

StateProject

Object #
FieldType
id ID Optional
position Int Optional
icon Int Optional
value String Optional
project Project Optional
tasks [Task] Optional
createdAt DateTime Optional
updatedAt DateTime Optional

Stats

Object #
FieldType
storage String Optional
duration Int Optional
active Int Optional
away Int Optional
tasks [Task] Optional

Subcategory

Object #
FieldType
id ID Optional
code String Optional
user User Optional
createdAt DateTime Optional
updatedAt DateTime Optional

Task

Object #
FieldType
id ID! Required
name String Optional
files [File] Optional
folders [Folder] Optional
logo String Optional
cover String Optional
color String Optional
author User Optional
project Project! Required
users [User!] Optional
deadline DateTime Optional
notifications [Notification] Optional
messages [Message!] Optional
length Length Optional
state String Optional
stateProject StateProject Optional
trackingTimes [TrackingTime!] Optional
totalTrackedTime Int Optional
createdAt DateTime Optional
updatedAt DateTime Optional

TrackingTime

Object #
FieldType
id ID! Required
duration Int! Required
startTime DateTime! Required
description String Optional
createdAt DateTime! Required
user User! Required

User

Object #
FieldType
id ID! Required
firstname String Optional
lastname String Optional
color String Optional
folderAuthor [Folder] Optional
videoproject Project Optional
videotask Task Optional
portfolio [File] Optional
description String Optional
invitations [User] Optional
email String Optional
role String Optional
subcategories [Subcategory] Optional
profileImg String Optional
noticreated [Notification] Optional
messagesViewed [Message] Optional
projectsAuthor [Project] Optional
taskAuthor [Task] Optional
cproject Project Optional
projectsInvited [Project!] Optional
projects [Project!] Optional
tasks [Task!] Optional
notifications [Notification] Optional
resume File Optional
theme String Optional
createdAt DateTime Optional
updatedAt DateTime Optional

View

Object #
FieldType
id ID! Required
from User Optional
to User Optional
createdAt DateTime Optional
updatedAt DateTime Optional

Employee

Input #
FieldType
email String Optional

EntityInput

Input #
FieldType
type String Optional
idMention String Optional
start Int Optional
end Int Optional
label String Optional

FileInput

Input #
FieldType
id ID Optional
name String Optional
code String Optional
type String Optional
duration Int Optional
category String Optional
base64 String Optional
location String Optional
size Int Optional
author ID Optional
project ID Optional
message ID Optional
task ID Optional
privat ID Optional

LengthInput

Input #
FieldType
days Int! Required
hours Int! Required
weeks Int! Required

Custom scalars

Scalar

DateTime — ISO-8601 date-time strings.

No results found.