Skip to content

RESTful API Specification

David Dupre edited this page Apr 18, 2018 · 1 revision

trackforever-api

This API specification is WIP.

Fetch all projects

  • URL: trackforever/projects
  • Method: POST
  • Parameters
{
    userId: String
}

TODO - research authentification

  • Success response
{
    userId: String,
    projects: [
        {
            id: String,
            ownerName: String,
            name: String,
            description: String,
            source: String
        }
    ]
}

Fetch project details and issue summaries

This should return the whole project and nearly a full issue except for the comments.

  • URL: trackforever/projects/{projectId}
  • Method: GET
  • Success response
{
    id: String,
    ownerName: String,
    name: String,
    description: String,
    source: String,
    issues: [
        id: String,
        status: String,
        summary: String,
        labels: List<String>,
        numComments: Integer,
        submitterName: String,
        assignees: List<String>,
        timeCreated: Long,
        timeUpdated: Long,
        timeClosed: Long,
    ]
}

Fetch issue details

  • URL: trackforever/issues
  • Method: POST
  • Parameters
{
    projectId: String,
    issueId: String
}
  • Success response
{
    id: String,
    projectId: String,
    status: String,
    summary: String,
    labels: List<String>,
    comments: [
        {
            commenterName: String,
            content: String
        }
    ]
    submitterName: String,
    assignees: List<String>,
    timeCreated: Long,
    timeUpdated: Long,
    timeClosed: Long
}

Importing issues

  • URL: trackforever/import/{sourceType}
  • Method: POST
  • Data parameters example:
{
    project: String
}

Data parameters will be different for each source type. The example above is for Google Code.

  • Success response. This will be used to navigate to the project's page.
{
    projectId: String
}
  • Error response may also be unique for each source type.

Remove a project

  • URL: trackforever/projects/{projectId}
  • Method: DELETE