Share an issue to a portal
const url = 'https://api.pealboard.com/v1/portals/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/requests';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"issueId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","companyId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","visibility":"private","requestTypeId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.pealboard.com/v1/portals/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/requests \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "issueId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "companyId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "visibility": "private", "requestTypeId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }'Links an existing issue to this portal as a request. Nothing is duplicated and nothing is written to GitHub: the issue is the same object, and removing it from the portal later leaves it untouched. One issue maps to at most one request per portal.
Access. Requires the member role or above (member, admin, owner). Sharing an issue to a portal shows work the team already did to the customer who asked for it, which is ordinary member work. API-key scope: requests:write.
Billing. Refused with 402 while the workspace’s billing has lapsed. Reads continue and nothing is deleted.
Retries. Send Idempotency-Key and a retry with the same key within 24 hours returns the first answer rather than acting twice.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”From GET /v1/portals.
From GET /v1/portals.
Request Body
Section titled “Request Body”object
A UUID this API issued.
A UUID this API issued.
Defaults to the portal’s own default visibility.
Only for its status rules. No form is filled in and no destination is used.
Responses
Section titled “Responses”The request.
object
A UUID this API issued.
ACME-42.
Derived from the issue at read time, never stored.
object
The stable identifier a client filters on. The word is in status.label.
The customer-facing word. Seven, fixed, and never GitHub’s own vocabulary.
Private: the requester and the workspace. company: everyone in the requester’s company. public: everyone in the portal. A manager sees every request in their company whatever this says.
Null while the request is in the hold queue: it has not reached GitHub.
object
A UUID this API issued.
object
A UUID this API issued.
The customer who submitted it. Null when a member shared an existing issue (see sharedBy), and null once the customer who submitted it has deleted their account.
object
A UUID this API issued.
The member who shared an existing issue to the portal. Null for a request a customer submitted.
object
A UUID this API issued.
object
A UUID this API issued.
The answers as they were submitted, in the request type’s form order, while the request is held. Null once it has an issue: the issue body is the record then, and GET /v1/issues/{issueId} has it.
The request in its portal.
Example
{ "reference": "ACME-42", "status": { "id": "open", "label": "Open" }, "visibility": "private", "issue": { "state": "open" }, "submission": [ { "type": "text" } ]}No valid credentials.
object
object
A stable identifier for the kind of failure. Safe to branch on.
What went wrong, written for a person.
Structured particulars, when there are any.
object
What to do about it, when there is something to do.
Quote this when asking about a specific failure.
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": { "additionalProperty": "example" }, "remedy": "example", "requestId": "example" }}The workspace’s billing has lapsed, so writes are refused.
object
object
A stable identifier for the kind of failure. Safe to branch on.
What went wrong, written for a person.
Structured particulars, when there are any.
object
What to do about it, when there is something to do.
Quote this when asking about a specific failure.
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": { "additionalProperty": "example" }, "remedy": "example", "requestId": "example" }}Authenticated, but not permitted.
object
object
A stable identifier for the kind of failure. Safe to branch on.
What went wrong, written for a person.
Structured particulars, when there are any.
object
What to do about it, when there is something to do.
Quote this when asking about a specific failure.
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": { "additionalProperty": "example" }, "remedy": "example", "requestId": "example" }}No such resource, or it is not visible to you.
object
object
A stable identifier for the kind of failure. Safe to branch on.
What went wrong, written for a person.
Structured particulars, when there are any.
object
What to do about it, when there is something to do.
Quote this when asking about a specific failure.
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": { "additionalProperty": "example" }, "remedy": "example", "requestId": "example" }}The request conflicts with the current state.
object
object
A stable identifier for the kind of failure. Safe to branch on.
What went wrong, written for a person.
Structured particulars, when there are any.
object
What to do about it, when there is something to do.
Quote this when asking about a specific failure.
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": { "additionalProperty": "example" }, "remedy": "example", "requestId": "example" }}The request did not match the expected shape.
object
object
A stable identifier for the kind of failure. Safe to branch on.
What went wrong, written for a person.
Structured particulars, when there are any.
object
What to do about it, when there is something to do.
Quote this when asking about a specific failure.
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": { "additionalProperty": "example" }, "remedy": "example", "requestId": "example" }}Rate limited. Retry after the interval in the header.
object
object
A stable identifier for the kind of failure. Safe to branch on.
What went wrong, written for a person.
Structured particulars, when there are any.
object
What to do about it, when there is something to do.
Quote this when asking about a specific failure.
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": { "additionalProperty": "example" }, "remedy": "example", "requestId": "example" }}GitHub or another dependency refused or did not answer. Nothing in the workspace changed.
object
object
A stable identifier for the kind of failure. Safe to branch on.
What went wrong, written for a person.
Structured particulars, when there are any.
object
What to do about it, when there is something to do.
Quote this when asking about a specific failure.
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": { "additionalProperty": "example" }, "remedy": "example", "requestId": "example" }}