Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

[Deprecated] Zenhub's legacy REST API

NotificationsYou must be signed in to change notification settings

ZenHubIO/API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 

Repository files navigation

Warning

This API has not been updated since 2021 is scheduled for deprecation. Please use our new GraphQL API athttps://developers.zenhub.com

Getting support

If you have any questions or feedback,contactsupport. You can submit feature requestshere.

Overview

Overview

Endpoint Reference

Webhooks

Contact Us

Root Endpoint

The ZenHub API root endpoint for Cloud is different than that of ZenHub On-Premise Enterprise instances and has also changed across Enterprise versions. Please refer to the table below for the appropriate endpoint.

ZenHub VersionAPI Root Endpoint
Cloudhttps://api.zenhub.com/
Enterprise 2https://<zenhub_enterprise_host>/
Enterprise 3https://<zenhub_enterprise_host>/api/

Authentication

All requests to the API need an API token. Generate a token in theAPI Tokens section of your ZenHubDashboard (for ZenHub Enterprise, refer to the table below for the proper link).

ZenHub Enterprise VersionAuth Token Generation Page
Enterprise 2https://<zenhub_enterprise_host>/app/dashboard/tokens
Enterprise 3https://<zenhub_enterprise_host>/dashboard/tokens

The token is sent in theX-Authentication-Token header. For example, usingcurl it would be:

curl -H'X-Authentication-Token: TOKEN' URL

Alternatively, you can choose to send the token in the URL using theaccess_token query string attribute. To do so, add?access_token=TOKEN to any URL.

Notes

  • Each user may only have one token, so generating a new token will invalidate previously created tokens.

Content-Type: JSON

Our REST API only supports JSON content for requests with a body and for responses.For each request containing a body with JSON, you will need to attach the header'Content-Type: application/json' with your request. For example, usingcurl it’d be:

curl -H'Content-Type: application/json' URL

API Rate Limit

We allow a maximum of 100 requests per minute to our API. All requests responses include the following headers related to this limitation.

HeaderDescription
X-RateLimit-LimitTotal number of requests allowed before the reset time
X-RateLimit-UsedNumber of requests sent in the current cycle. Will be set to 0 at the reset time.
X-RateLimit-ResetTime in UTC epoch seconds when the usage gets reset.

To avoid time differences between your computer and our servers, we suggest to use theDate header in the response to know exactly when the limit is reset.

Errors

The ZenHub API can return the following errors:

Status CodeDescription
401The token is not valid. SeeAuthentication.
403Reached request limit to the API. SeeAPI Limits.
404Not found.

Endpoint Reference

Notes

  • repo_id is the ID of the repository, not its full name. For example, the ID of theZenHubIO/API repository is47655910. To find out the ID of your repository, useGitHub’s API, or copy it from the URL of the Board (for this repo, the Board URL ishttps://github.com/ZenHubIO/API#boards?repos=47655910).
  • workspace_id is the ID of the ZenHub Workspace. This is found in the URL for the Workspace after the name of the workspace. For example, theworkspace_id forhttps://app.zenhub.com/workspaces/workflows---product--design-workspace-5f6b5c9ab4fd7d76a3e5b7d8/board? is5f6b5c9ab4fd7d76a3e5b7d8.

Issues

Get Issue Data

Get the data for a specific issue.

Endpoint

GET /p1/repositories/:repo_id/issues/:issue_number

URL Parameters

NameTypeComments
repo_idNumberRequired
issue_numberNumberRequired

Example Response

{"estimate": {"value":8  },"plus_ones": [    {"created_at":"2015-12-11T18:43:22.296Z"    }  ],"pipeline": {"name":"QA","pipeline_id":"5d0a7a9741fd098f6b7f58a7","workspace_id":"5d0a7a9741fd098f6b7f58ac"  },"pipelines": [    {"name":"QA","pipeline_id":"5d0a7a9741fd098f6b7f58a7","workspace_id":"5d0a7a9741fd098f6b7f58ac"    },    {"name":"Done","pipeline_id":"5d0a7cea41fd098f6b7f58b7","workspace_id":"5d0a7cea41fd098f6b7f58b8"    }  ],"is_epic":true}

Notes

  • plus_ones[].user_id was removed from the response.
  • pipeline object references the oldest Workspace pipeline this issue is in.
    • NOTE: If an issue's status is closed, thepipeline value will describe the Pipeline that the issue was in prior to the issue being closed. The ZenHub API does not consider the "Closed" Pipeline to be a distinct Pipeline at this time and you shouldnot use the Pipeline value to determine whether or not an issue is closed or open (usestatus instead).
    • NOTE: Reopened issues might take up to one minute to show up in the correct Pipeline.
  • pipelines contains all pipelines in all Workspaces this issue is in.

Get Issue Events

Get the events for an issue.

Endpoint

GET /p1/repositories/:repo_id/issues/:issue_number/events

URL Parameters

NameTypeComments
repo_idNumberRequired
issue_numberNumberRequired

Example Response

[  {"user_id":16717,"type":"estimateIssue","created_at":"2015-12-11T19:43:22.296Z","from_estimate": {"value":8    }  },  {"user_id":16717,"type":"estimateIssue","created_at":"2015-12-11T18:43:22.296Z","from_estimate": {"value":4    },"to_estimate": {"value":8    }  },  {"user_id":16717,"type":"estimateIssue","created_at":"2015-12-11T13:43:22.296Z","to_estimate": {"value":4    }  },  {"user_id":16717,"type":"transferIssue","created_at":"2015-12-11T12:43:22.296Z","from_pipeline": {"name":"Backlog"    },"to_pipeline": {"name":"In progress"    },"workspace_id":"5d0a7a9741fd098f6b7f58ac"  },  {"user_id":16717,"type":"transferIssue","created_at":"2015-12-11T11:43:22.296Z","to_pipeline": {"name":"Backlog"    }  }]

Notes

  • Returns issue events, sorted by creation time, most recent first.
  • Each event contains theUser ID of the user who performed the change, theCreation Date of the event, and the eventType.
  • Type can be eitherestimateIssue ortransferIssue. The values before and after the event are included in the event data.
  • transferIssue events include aworkspace_id indicating in which Workspace the transfer occurred.

Move an Issue Between Pipelines

Moves an issue between Pipelines in a Workspace

Endpoint

POST /p2/workspaces/:workspace_id/repositories/:repo_id/issues/:issue_number/moves

URL Parameters

NameTypeComments
workspace_idStringRequired
repo_idNumberRequired
issue_numberNumberRequired

Body Parameters

NameTypeComments
pipeline_idStringRequired
positionString orNumberRequired

Notes

  • workspace_id is the ID of the Workspace you're transferring the issue in. To get a list of Workspaces forrepo_id, you can use theGet ZenHub Workspaces for a repository endpoint.
  • pipeline_id is the ID for one of the Pipelines in the Workspace specified byworkspace_id (i.e: In Progress, Done, QA). In order to obtain this ID, you can use theGet a ZenHub Board for a repository endpoint.
  • position can be specified astop orbottom, or a0-based position in the Pipeline such as1, which would be the second position in the Pipeline.

Example Request Body

{"pipeline_id":"58bf13aba426771426665e60","position":"top"}

Example Response

Status200 for a successful move. No response body.

Move an Issue Between Pipelines in the oldest Workspace

Moves an issue between Pipelines for a repository in your oldest Workspace

Endpoint

POST /p1/repositories/:repo_id/issues/:issue_number/moves

URL Parameters

NameTypeComments
repo_idNumberRequired
issue_numberNumberRequired

Body Parameters

NameTypeComments
pipeline_idStringRequired
positionString orNumberRequired

Notes

  • pipeline_id is the ID for one of the Pipelines in your oldest Workspace(i.e: In Progress, Done, QA). In order to obtain this ID, you can use theGet the oldest ZenHub Board for a repository endpoint.
  • position can be specified astop orbottom, or a0-based position in the Pipeline such as1, which would be the second position in the Pipeline.

Example Request Body

{"pipeline_id":"58bf13aba426771426665e60","position":"top"}

Example Response

Status200 for a successful move. No response body.

Set Issue Estimate

Endpoint

PUT /p1/repositories/:repo_id/issues/:issue_number/estimate

URL Parameters

NameTypeComments
repo_idNumberRequired
issue_numberNumberRequired

Body Parameters

NameTypeComments
estimateNumberRequired, number representing estimate value

Example Request

{"estimate":15 }

Example Response

{"estimate":15 }

Epics

Get Epics for a repository

Get all Epics for a repository

Endpoint

GET /p1/repositories/:repo_id/epics

URL Parameters

NameTypeComments
repo_idNumberRequired

Example Response

{"epic_issues": [    {"issue_number":3953,"repo_id":1234567,"issue_url":"https://github.com/RepoOwner/RepoName/issues/3953"    },    {"issue_number":1342,"repo_id":1234567,"issue_url":"https://github.com/RepoOwner/RepoName/issues/1342"    }  ]}

Notes

  • The endpoint returns an array of the repository’s Epics. The issue number, repository ID,and GitHub issue URL is provided for each Epic.
  • If an issue is only an issue belonging to an Epic (and not a parent Epic), it is not considered an Epic and won’t be included in the return array.

Get Epic Data

Get the data for an Epic issue.

Endpoint

GET /p1/repositories/:repo_id/epics/:epic_id

URL Parameters

NameTypeComments
repo_idNumberRequired
epic_idNumberRequired, Github issue number

Notes

  • epic_id is the GitHub issue number. You may fetch the list of Epics usingGet Epics for a repository endpoint.
  • The Epic and the Epic's issues containpipeline (the oldest Workspace's pipeline) andpipelines (all Workspace Pipelines that issue is in).

Example Response

{"total_epic_estimates": {"value":60 },"estimate": {"value":10 },"pipeline": {"workspace_id":"5d0a7a9741fd098f6b7f58ac","name":"Backlog","pipeline_id":"5d0a7a9741fd098f6b7f58a8"  },"pipelines": [    {"workspace_id":"5d0a7a9741fd098f6b7f58ac","name":"Backlog","pipeline_id":"5d0a7a9741fd098f6b7f58a8"    },    {"workspace_id":"5d0a7cea41fd098f6b7f58b8","name":"In Progress","pipeline_id":"5d0a7cea41fd098f6b7f58b5"    }  ],"issues": [    {"issue_number":3161,"is_epic":true,"repo_id":1099029,"estimate": {"value":40 },"pipelines": [        {"workspace_id":"5d0a7a9741fd098f6b7f58ac","name":"Backlog","pipeline_id":"5d0a7a9741fd098f6b7f58a8"        },        {"workspace_id":"5d0a7cea41fd098f6b7f58b8","name":"In Progress","pipeline_id":"5d0a7cea41fd098f6b7f58b5"        }      ],"pipeline": {"workspace_id":"5d0a7a9741fd098f6b7f58ac","name":"Backlog","pipeline_id":"5d0a7a9741fd098f6b7f58a8"      }    },    {"issue_number":2,"is_epic":false,"repo_id":1234567,"estimate": {"value":10 },"pipelines": [        {"workspace_id":"5d0a7a9741fd098f6b7f58ac","name":"Backlog","pipeline_id":"5d0a7a9741fd098f6b7f58a8"        },        {"workspace_id":"5d0a7cea41fd098f6b7f58b8","name":"In Progress","pipeline_id":"5d0a7cea41fd098f6b7f58b5"        }      ],"pipeline": {"workspace_id":"5d0a7a9741fd098f6b7f58ac","name":"Backlog","pipeline_id":"5d0a7a9741fd098f6b7f58a8"      }    }  ]}

Notes

The endpoint returns:

  • the total Epic Estimate value (the sum of all the Estimates of Issues contained withinthe Epic, as well as the Estimate of the Epic itself)
  • the Estimate of the Epic
  • the name of the Pipeline the Epic is in
  • issues belonging to the Epic

For each issue belonging to the Epic:

  • issue number
  • repo ID
  • Estimate value
  • is_epic flag (true orfalse)

Convert an Epic to an Issue

Converts an Epic back to a regular issue.

Endpoint

POST /p1/repositories/:repo_id/epics/:issue_number/convert_to_issue

URL Parameters

NameTypeComments
repo_idNumberRequired
issue_numberNumberRequired, the number of the issue to be converted

Example Response

  • 200 if the issue was converted to Epic successfully

Does not return any body in the response.

Convert Issue to Epic

Converts an issue to an Epic, along with any issues that should be part of it.

Endpoint

POST /p1/repositories/:repo_id/issues/:issue_number/convert_to_epic

URL Parameters

NameTypeComments
repo_idNumberRequired
issue_numberNumberRequired

Body Parameters

NameTypeComments
issues[{repo_id: Number, issue_number: Number}]Required, array of Objects withrepo_id andissue_number

Example Request Body

{"issues": [    {"repo_id":13550592,"issue_number":3 },    {"repo_id":13550592,"issue_number":1 }  ]}

Response

Does not return any body in the response.

  • 200 if the issue was converted to Epic successfully
  • 400 if the supplied issue is already an Epic

Add or remove issues to Epic

Bulk add or remove issues to an Epic. The result returns which issue was added or removed from the Epic.

Endpoint

POST /p1/repositories/:repo_id/epics/:issue_number/update_issues

URL Parameters

NameTypeComments
repo_idNumberRequired
issue_numberNumberRequired

Body Parameters

NameTypeComments
remove_issues[{repo_id: Number, issue_number: Number}]Required, array of Objects withrepo_id andissue_number
add_issues[{repo_id: Number, issue_number: Number}]Required, array of Objects withrepo_id andissue_number

Example Request Body

{"remove_issues": [{"repo_id":13550592,"issue_number":3 }],"add_issues": [    {"repo_id":13550592,"issue_number":2 },    {"repo_id":13550592,"issue_number":1 }  ]}

Notes

  • remove_issues is an array that indicates with issues we want to remove from the specified Epic. They should be specified as an array containing objects with the issue’srepo_id andissue_number.
  • add_issues is an array that indicates with issues we want to add to the specified Epic. They should be specified as an array containing objects with the issue’srepo_id andissue_number.

Example Response

{"removed_issues": [{"repo_id":3887883,"issue_number":3 }],"added_issues": [    {"repo_id":3887883,"issue_number":2 },    {"repo_id":3887883,"issue_number":1 }  ]}

Notes

  • removed_issues shows which issues were removed in this operation.
  • add_issues shows which issues were added in this operation.
  • Returns a404 if the Epic doesn’t exist

Workspace

Get ZenHub Workspaces for a repository

Gets all Workspaces containingrepo_id

Endpoint

GET /p2/repositories/:repo_id/workspaces

URL Parameters

NameTypeComments
repo_idNumberRequired

Example Response

[  {"name":"Design and UX","description":null,"id":"5d0a7a9741fd098f6b7f58ac","repositories": [12345678,912345]  },  {"name":"Roadmap","description":"Feature planning and enhancements","id":"5d0a7cea41fd098f6b7f58b8","repositories": [12345678]  }]

Get a ZenHub Board for a repository

Get ZenHub Board data for a repository (repo_id) within the Workspace (workspace_id)

Endpoint

GET /p2/workspaces/:workspace_id/repositories/:repo_id/board

URL Parameters

NameTypeComments
repo_idNumberRequired
workspace_idStringRequired

Example Response

{"pipelines": [    {"id":"595d430add03f01d32460080","name":"New Issues","issues": [        {"issue_number":279,"estimate": {"value":40 },"position":0,"is_epic":true        },        {"issue_number":142,"is_epic":false        }      ]    },    {"id":"595d430add03f01d32460081","name":"Backlog","issues": [        {"issue_number":303,"estimate": {"value":40 },"position":3,"is_epic":false        }      ]    },    {"id":"595d430add03f01d32460082","name":"To Do","issues": [        {"issue_number":380,"estimate": {"value":1 },"position":0,"is_epic":true        },        {"issue_number":284,"position":2,"is_epic":false        },        {"issue_number":329,"estimate": {"value":8 },"position":7,"is_epic":false        }      ]    }  ]}

Get the oldest ZenHub board for a repository

Endpoint

GET /p1/repositories/:repo_id/board

URL Parameters

NameTypeComments
repo_idNumberRequired

Example Response

{"pipelines": [    {"id":"595d430add03f01d32460080","name":"New Issues","issues": [        {"issue_number":279,"estimate": {"value":40 },"position":0,"is_epic":true        },        {"issue_number":142,"is_epic":false        }      ]    },    {"id":"595d430add03f01d32460081","name":"Backlog","issues": [        {"issue_number":303,"estimate": {"value":40 },"position":3,"is_epic":false        }      ]    },    {"id":"595d430add03f01d32460082","name":"To Do","issues": [        {"issue_number":380,"estimate": {"value":1 },"position":0,"is_epic":true        },        {"issue_number":284,"position":2,"is_epic":false        },        {"issue_number":329,"estimate": {"value":8 },"position":7,"is_epic":false        }      ]    }  ]}

Notes

  • The endpoint returns the Board’s pipelines, plus the issues contained within each Pipeline. It returns the issue number of each issue, their position in the Board, theis_epic flag (true orfalse), and its Estimate (if set).
  • Even if the issues are returned in the right order, the position can’t be guessed from its index. Note that some issues won’t have position – this is because they have not been prioritized on your Board.
  • The Board returned by the endpoint doesn’t include closed issues. To get closed issues for a repository, you can use the GitHub API. Reopened issues might take up to one minute to appear in the correct Pipeline.

Milestones

Set milestone start date

Endpoint

POST /p1/repositories/:repo_id/milestones/:milestone_number/start_date

URL Parameters

NameTypeComments
repo_idNumberRequired
milestone_numberNumberRequired

Body Parameters

NameTypeComments
start_dateISO8601 date stringRequired

Example Request Body

{"start_date":"2010-11-13T01:38:56.842Z" }

Example Response

{"start_date":"2010-11-13T01:38:56.842Z" }

Get milestone start date

Endpoint

GET /p1/repositories/:repo_id/milestones/:milestone_number/start_date

URL Parameters

NameTypeComments
repo_idNumberRequired
milestone_numberNumberRequired

Example Response

{"start_date":"2010-11-13T01:38:56.842Z" }

Dependencies

Get Dependencies for a Repository

Endpoint

GET /p1/repositories/:repo_id/dependencies

URL Parameters

NameTypeComments
repo_idNumberRequired

Example Response

{"dependencies": [    {"blocking": {"issue_number":3953,"repo_id":1234567      },"blocked": {"issue_number":1342,"repo_id":1234567      }    },    {"blocking": {"issue_number":5,"repo_id":987      },"blocked": {"issue_number":1342,"repo_id":1234567      }    }  ]}

Notes

  • This endpoint fetches all dependencies associated to the given repository that the user has read permission to
  • The endpoint takes arepo_id param in the URL.
  • Only dependencies where the user has read permissions to both sides will be returned

Create a Dependency

Endpoint

POST /p1/dependencies

Body Parameters

NameTypeComments
blockingObjectRequired
blocking.repo_idNumberRequired
blocking.issue_numberNumberRequired
blockedObjectRequired
blocked.repo_idNumberRequired
blocked.issue_numberNumberRequired

Example Request Body

{"blocking": {"repo_id":92563409,"issue_number":14  },"blocked": {"repo_id":92563409,"issue_number":13  }}

Example Response Body

{"blocking": {"repo_id":92563409,"issue_number":14  },"blocked": {"repo_id":92563409,"issue_number":13  }}

Notes

  • This endpoint creates one dependency
  • The endpoint takes adependency in the Body (see description above).
  • User needs write permission on both repositories
  • Cannot create dependency that will cause cycle, or between repositories not in the same workspace
  • On success: returns HTTP 200 and returns the created object

Remove a Dependency

Endpoint

DELETE /p1/dependencies

Body Parameters

NameTypeComments
blockingObjectRequired
blocking.repo_idNumberRequired
blocking.issue_numberNumberRequired
blockedObjectRequired
blocked.repo_idNumberRequired
blocked.issue_numberNumberRequired

Example Request Body

{"blocking": {"repo_id":92563409,"issue_number":14  },"blocked": {"repo_id":92563409,"issue_number":13  }}

Notes

  • This endpoint removes one dependency
  • The endpoint takes adependency in the Body (see description above).
  • User needs write permission on both repositories
  • On success: returns HTTP 204 No Content and empty body

Release Reports

Create a Release Report

Endpoint

POST /p1/repositories/:repo_id/reports/release

URL Parameters

NameTypeComments
repo_idNumberRequired

Body Parameters

NameTypeComments
titleStringRequired
descriptionStringOptional
start_dateISO8601 date stringRequired
desired_end_dateISO8601 date stringRequired
repositories[Number]Optional

Example Request Body

{"title":"Great title","description":"Amazing description","start_date":"2007-01-01T00:00:00Z","desired_end_date":"2007-01-01T00:00:00Z","repositories": [103707262]}

Example Response

{"release_id":"59dff4f508399a35a276a1ea","title":"Great title","description":"Amazing description","start_date":"2007-01-01T00:00:00.000Z","desired_end_date":"2007-01-01T00:00:00.000Z","created_at":"2017-10-12T23:04:21.795Z","closed_at":null,"state":"open","repositories": [103707262]}

Notes

  • CHANGE NOTICE: Only the repositories provided in the param and the body will be added to the Release Report - change in effect mid February 2019.
  • The endpoint takes arepo_id param in the URL.
  • Additional repository IDs can be passed in the bodyrepositories parameter
  • Any Boards not associated with the URLrepo_id parameter, but associated with repositories in the request bodyrepositories parameter will also be associated to the Release Report.
  • The user creating the release requires push permission to the repositories in the request.

Get a Release Report

Endpoint

GET /p1/reports/release/:release_id

URL Parameters

NameTypeComments
release_idStringRequired

Example Response

{"release_id":"59d3cd520a430a6344fd3bdb","title":"Test release","description":"","start_date":"2017-10-01T19:00:00.000Z","desired_end_date":"2017-10-03T19:00:00.000Z","created_at":"2017-10-03T17:48:02.701Z","closed_at":null,"state":"open","repositories": [105683718]}

Get Release Reports for a Repository

Endpoint

GET /p1/repositories/:repo_id/reports/releases

URL Parameters

NameTypeComments
repo_idNumberRequired

Example Response

[  {"release_id":"59cbf2fde010f7a5207406e8","title":"Great title for release 1","description":"Great description for release","start_date":"2000-10-10T00:00:00.000Z","desired_end_date":"2010-10-10T00:00:00.000Z","created_at":"2017-09-27T18:50:37.418Z","closed_at":null,"state":"open"  },  {"release_id":"59cbf2fde010f7a5207406e8","title":"Great title for release 2","description":"Great description for release","start_date":"2000-10-10T00:00:00.000Z","desired_end_date":"2010-10-10T00:00:00.000Z","created_at":"2017-09-27T18:50:37.418Z","closed_at":null,"state":"open"  }]

Edit a Release Report

Endpoint

PATCH /p1/reports/release/:release_id

URL Parameters

NameTypeComments
release_idStringRequired

Body Parameters

NameTypeComments
titleStringRequired
descriptionStringOptional
start_dateISO8601 date stringOptional
desired_end_dateISO8601 date stringOptional
stateStringOptional,open orclosed

Example Request Body

{"title":"Amazing title","description":"Amazing description","start_date":"2007-01-01T00:00:00Z","desired_end_date":"2007-01-01T00:00:00Z","state":"closed"}

Example Response

{"release_id":"59d3d6438b3f16667f9e7174","title":"Amazing title","description":"Amazing description","start_date":"2007-01-01T00:00:00.000Z","desired_end_date":"2007-01-01T00:00:00.000Z","created_at":"2017-10-03T18:26:11.700Z","closed_at":"2017-10-03T18:26:11.700Z","state":"closed","repositories": [105683567,105683718]}

Add a Repository to a Release Report

Endpoint

POST /p1/reports/release/:release_id/repository/:repo_id

URL Parameters

NameTypeComments
release_idStringRequired
repo_idNumberRequired

Notes

  • On success, returns HTTP 200 OK and empty body

Remove a Repository from a Release Report

Endpoint

DELETE /p1/reports/release/:release_id/repository/:repo_id

URL Parameters

NameTypeComments
release_idStringRequired
repo_idNumberRequired

Notes

  • On success, returns HTTP 204 OK and empty body

Release Report Issues

Get all the Issues for a Release Report

Endpoint

GET /p1/reports/release/:release_id/issues

URL Parameters

NameTypeComments
release_idStringRequired

Example Response

[  {"repo_id":103707262,"issue_number":2 },  {"repo_id":103707262,"issue_number":3 }]

Add or Remove Issues to or from a Release Report

Endpoint

PATCH /p1/reports/release/:release_id/issues

URL Parameters

NameTypeComments
release_idStringRequired

Body Parameters

NameTypeComments
add_issues[{repo_id: Number, issue_number: Number}]Required, array of Objects withrepo_id andissue_number
remove_issues[{repo_id: Number, issue_number: Number}]Required, array of Objects withrepo_id andissue_number

Note

  • Both theadd_issues andremove_issues keys are required, but can be an empty array when not used

Example Body Request

{"add_issues": [{"repo_id":103707262,"issue_number":3 }],"remove_issues": []}

Example Response

{"added": [{"repo_id":103707262,"issue_number":3 }],"removed": []}

Note

  • Adding and removing issues can be done in the same request by populating with theadd_issues andremove_issues keys.

Webhooks

You can use our webhooks to fetch or store your ZenHub data, in real time, across services like Slack, Gitter, Spark, HipChat, or something custom!

To set up an integration, head on over to ourDashboard, navigate to your organization, and select theSlack & Integrations tab. From there, you may choose one of the 5 services (Slack, HipChat, Gitter, Spark, or Custom).

For instructions, you'll notice theHow to create a webhook link changes dynamically based on the service you select. Simply choose a repository with which to connect, add an optional description, paste your webhook, and click "Add" to save your new integration.

ZenHub integrations

Custom webhooks

Our custom webhook sends a POST request to your webhook for multiple events that occur on your ZenHub board. See below for examples of the events and data that they will contain. Please note that the content type in the examples has been written in JSON, however the actual data is sent inx-www-form-urlencoded format.

Content Type: urlencoded

The POST request is sent in thex-www-form-urlencoded format.

Example:field1=value1&field2=value2

Issue transfer

{"type":"issue_transfer","github_url":"https://github.com/ZenHubIO/support/issues/618","organization":"ZenHubHQ","repo":"support","user_name":"ZenHubIO","issue_number":"618","issue_title":"ZenHub Change Log","to_pipeline_name":"New Issues","workspace_id":"603fc3e575de63001cc163f9","workspace_name":"My Workspace","from_pipeline_name":"Discussion"}

Estimate Set

{"type":"estimate_set","github_url":"https://github.com/ZenHubIO/support/issues/618","organization":"ZenHubHQ","repo":"support","user_name":"ZenHubIO","issue_number":"618","issue_title":"ZenHub Change Log","estimate":"8"}

Estimate Cleared

{"type":"estimate_cleared","github_url":"https://github.com/ZenHubIO/support/issues/618","organization":"ZenHubHQ","repo":"support","user_name":"ZenHubIO","issue_number":"618","issue_title":"ZenHub Change Log"}

Issue Reprioritized

{"type":"issue_reprioritized","github_url":"https://github.com/ZenHubIO/support/issues/618","organization":"ZenHubHQ","repo":"support","user_name":"ZenHubIO","issue_number":"618","issue_title":"ZenHub Change Log","to_pipeline_name":"Backlog","from_position":"4","to_position":"0","workspace_id":"603fc3e575de63001cc163f9","workspace_name""My Workspace"}

As an example, here's a simple Node/Express app that would be able receive the webhooks (using ngrok):

varexpress=require('express');varhttp=require('http');varbodyParser=require('body-parser');varapp=express();http.createServer(app).listen('6000',function(){console.log('Listening on 6000');});app.use(bodyParser());app.post('*',function(req,res){console.dir(req.body);});

Contact us

We’d love to hear from you. If you have any questions, concerns, or ideas related to the ZenHub API, please reach us atsupport@zenhub.com or find us onTwitter.


[8]ページ先頭

©2009-2025 Movatter.jp