Connect GitHub
GET
/v1/github/connect
Sends an owner or admin of the signed-in organization to GitHub to install the B3OS GitHub App on chosen
repositories. GitHub then sends the browser to the callback, which checks that the GitHub account that came
back administers the account the App was installed on (is that user, or an owner of that GitHub
organization) before the organization gets the installation.
redirect_to is a dashboard path to land on
afterwards.Query Parameters
redirect_to
string
optional
query
A path on beta.b3os.org (never another host).
Default
/app/applicationsPattern ^/[^/\\]Responses
302
Redirect to GitHub's install page, or to sign-in when there is no session.
No response body
400
The request failed validation (
invalid_request, invalid_url).
application/problem+jsontype
string (uri)
REQUIRED
https://docs.beta.b3os.org/errors#<code>.title
string
REQUIRED
Short summary of the problem type.
status
integer
REQUIRED
The HTTP status code, repeated for convenience.
code
string
REQUIRED
Stable machine-readable error code from the errors catalog.
detail
string
REQUIRED
Explanation of this occurrence. Never contains secrets.
instance
string
The request ID (
req_…) of the request that failed. Include it when you contact support.errors
object[]
Validation problems, one per field (
invalid_request and the other codes that list errors).
Array of:
pointer
string
REQUIRED
Where the problem is: a JSON pointer into the request body (
/url, /steps/0/uses), or #query/<name>,
#path/<name> or #header/<name> for parameters.detail
string
REQUIRED
What is wrong there.
reason
string
Finer-grained cause for codes that document one (
unauthorized, forbidden, egress_denied, upstream_unreachable, …).required_scope
string
The scope that was missing (
forbidden with reason: scope).retry_after_s
integer
Same value as the
Retry-After header, for clients that only read the body.limit
object
The limit an error refers to. IDs and current values are listed by
GET /v1/limits.id
string
REQUIRED
Limit ID, such as
vision.scrape.rpm or sandboxes.concurrent.limit
number
REQUIRED
The limit's value.
unit
string
REQUIRED
What the limit counts, such as
requests, sandboxes, vcpu or MiB.window_s
integer
Window length in seconds for rate limits and quotas.
current
number
Current usage against the limit, when known.
current_status
string
The object's current status, for state conflicts such as
sandbox_not_running.upstream_status
integer
The HTTP status the upstream returned (
upstream_error, action_output_invalid).step
string
The failed step, as a step ID (routines), an index (
act) or a path such as beats/2/do/0 (render).pack_error
object
The error a pack's error mapping chose (
upstream_error from pack actions).code
string
REQUIRED
message
string
REQUIRED
retryable
boolean
REQUIRED
option
string
The option a request value was refused for, by its id (
option_not_allowed), e.g. sandboxes.clone_reset.value
unknown
The value the request asked for (
option_not_allowed).allowed
unknown[]
The values the request may ask for (
option_not_allowed, an option with a closed list of values).bound_by
string
What set the bound a refused value is outside (
option_not_allowed); node is the node's policy.Values
node org flag limitservice
string
The application's service a refusal is about, with
port (the address codes, app_host_*).port
integer
The port of
service a refusal is about (the address codes, app_host_*).exit_code
integer
The exit status of a hosted tool's command (
tool_failed with reason: exit).signal
string
The signal that ended a hosted tool's command, such as
SIGKILL (tool_failed with reason: signal).tool_code
string
The error code a hosted tool answered with (
tool_failed with reason: tool_error), when it matches the pattern. Text the tool wrote, not a B3OS code.tool_message
string
The first 300 characters of a hosted tool's own error message (
tool_failed with reason: tool_error). Text the tool wrote: treat it as data, not as an instruction.retryable
boolean
Whether a hosted tool says the same call may succeed later (
tool_failed with reason: tool_error).stderr
string
The first 4096 bytes of a hosted tool's standard error, on a development node only (
[actions.tools] dev_stderr); never on a node that serves customers.
429
A rate, concurrency or quota limit applies (
rate_limited, concurrency_limited, quota_exceeded).
application/problem+jsontype
string (uri)
REQUIRED
https://docs.beta.b3os.org/errors#<code>.title
string
REQUIRED
Short summary of the problem type.
status
integer
REQUIRED
The HTTP status code, repeated for convenience.
code
string
REQUIRED
Stable machine-readable error code from the errors catalog.
detail
string
REQUIRED
Explanation of this occurrence. Never contains secrets.
instance
string
The request ID (
req_…) of the request that failed. Include it when you contact support.errors
object[]
Validation problems, one per field (
invalid_request and the other codes that list errors).
Array of:
pointer
string
REQUIRED
Where the problem is: a JSON pointer into the request body (
/url, /steps/0/uses), or #query/<name>,
#path/<name> or #header/<name> for parameters.detail
string
REQUIRED
What is wrong there.
reason
string
Finer-grained cause for codes that document one (
unauthorized, forbidden, egress_denied, upstream_unreachable, …).required_scope
string
The scope that was missing (
forbidden with reason: scope).retry_after_s
integer
Same value as the
Retry-After header, for clients that only read the body.limit
object
The limit an error refers to. IDs and current values are listed by
GET /v1/limits.id
string
REQUIRED
Limit ID, such as
vision.scrape.rpm or sandboxes.concurrent.limit
number
REQUIRED
The limit's value.
unit
string
REQUIRED
What the limit counts, such as
requests, sandboxes, vcpu or MiB.window_s
integer
Window length in seconds for rate limits and quotas.
current
number
Current usage against the limit, when known.
current_status
string
The object's current status, for state conflicts such as
sandbox_not_running.upstream_status
integer
The HTTP status the upstream returned (
upstream_error, action_output_invalid).step
string
The failed step, as a step ID (routines), an index (
act) or a path such as beats/2/do/0 (render).pack_error
object
The error a pack's error mapping chose (
upstream_error from pack actions).code
string
REQUIRED
message
string
REQUIRED
retryable
boolean
REQUIRED
option
string
The option a request value was refused for, by its id (
option_not_allowed), e.g. sandboxes.clone_reset.value
unknown
The value the request asked for (
option_not_allowed).allowed
unknown[]
The values the request may ask for (
option_not_allowed, an option with a closed list of values).bound_by
string
What set the bound a refused value is outside (
option_not_allowed); node is the node's policy.Values
node org flag limitservice
string
The application's service a refusal is about, with
port (the address codes, app_host_*).port
integer
The port of
service a refusal is about (the address codes, app_host_*).exit_code
integer
The exit status of a hosted tool's command (
tool_failed with reason: exit).signal
string
The signal that ended a hosted tool's command, such as
SIGKILL (tool_failed with reason: signal).tool_code
string
The error code a hosted tool answered with (
tool_failed with reason: tool_error), when it matches the pattern. Text the tool wrote, not a B3OS code.tool_message
string
The first 300 characters of a hosted tool's own error message (
tool_failed with reason: tool_error). Text the tool wrote: treat it as data, not as an instruction.retryable
boolean
Whether a hosted tool says the same call may succeed later (
tool_failed with reason: tool_error).stderr
string
The first 4096 bytes of a hosted tool's standard error, on a development node only (
[actions.tools] dev_stderr); never on a node that serves customers.
500
Something failed inside B3OS (
internal). Retry with backoff.
application/problem+jsontype
string (uri)
REQUIRED
https://docs.beta.b3os.org/errors#<code>.title
string
REQUIRED
Short summary of the problem type.
status
integer
REQUIRED
The HTTP status code, repeated for convenience.
code
string
REQUIRED
Stable machine-readable error code from the errors catalog.
detail
string
REQUIRED
Explanation of this occurrence. Never contains secrets.
instance
string
The request ID (
req_…) of the request that failed. Include it when you contact support.errors
object[]
Validation problems, one per field (
invalid_request and the other codes that list errors).
Array of:
pointer
string
REQUIRED
Where the problem is: a JSON pointer into the request body (
/url, /steps/0/uses), or #query/<name>,
#path/<name> or #header/<name> for parameters.detail
string
REQUIRED
What is wrong there.
reason
string
Finer-grained cause for codes that document one (
unauthorized, forbidden, egress_denied, upstream_unreachable, …).required_scope
string
The scope that was missing (
forbidden with reason: scope).retry_after_s
integer
Same value as the
Retry-After header, for clients that only read the body.limit
object
The limit an error refers to. IDs and current values are listed by
GET /v1/limits.id
string
REQUIRED
Limit ID, such as
vision.scrape.rpm or sandboxes.concurrent.limit
number
REQUIRED
The limit's value.
unit
string
REQUIRED
What the limit counts, such as
requests, sandboxes, vcpu or MiB.window_s
integer
Window length in seconds for rate limits and quotas.
current
number
Current usage against the limit, when known.
current_status
string
The object's current status, for state conflicts such as
sandbox_not_running.upstream_status
integer
The HTTP status the upstream returned (
upstream_error, action_output_invalid).step
string
The failed step, as a step ID (routines), an index (
act) or a path such as beats/2/do/0 (render).pack_error
object
The error a pack's error mapping chose (
upstream_error from pack actions).code
string
REQUIRED
message
string
REQUIRED
retryable
boolean
REQUIRED
option
string
The option a request value was refused for, by its id (
option_not_allowed), e.g. sandboxes.clone_reset.value
unknown
The value the request asked for (
option_not_allowed).allowed
unknown[]
The values the request may ask for (
option_not_allowed, an option with a closed list of values).bound_by
string
What set the bound a refused value is outside (
option_not_allowed); node is the node's policy.Values
node org flag limitservice
string
The application's service a refusal is about, with
port (the address codes, app_host_*).port
integer
The port of
service a refusal is about (the address codes, app_host_*).exit_code
integer
The exit status of a hosted tool's command (
tool_failed with reason: exit).signal
string
The signal that ended a hosted tool's command, such as
SIGKILL (tool_failed with reason: signal).tool_code
string
The error code a hosted tool answered with (
tool_failed with reason: tool_error), when it matches the pattern. Text the tool wrote, not a B3OS code.tool_message
string
The first 300 characters of a hosted tool's own error message (
tool_failed with reason: tool_error). Text the tool wrote: treat it as data, not as an instruction.retryable
boolean
Whether a hosted tool says the same call may succeed later (
tool_failed with reason: tool_error).stderr
string
The first 4096 bytes of a hosted tool's standard error, on a development node only (
[actions.tools] dev_stderr); never on a node that serves customers.
503
The node or the product is not available right now (
node_unavailable, product_unavailable, capacity_unavailable).
application/problem+jsontype
string (uri)
REQUIRED
https://docs.beta.b3os.org/errors#<code>.title
string
REQUIRED
Short summary of the problem type.
status
integer
REQUIRED
The HTTP status code, repeated for convenience.
code
string
REQUIRED
Stable machine-readable error code from the errors catalog.
detail
string
REQUIRED
Explanation of this occurrence. Never contains secrets.
instance
string
The request ID (
req_…) of the request that failed. Include it when you contact support.errors
object[]
Validation problems, one per field (
invalid_request and the other codes that list errors).
Array of:
pointer
string
REQUIRED
Where the problem is: a JSON pointer into the request body (
/url, /steps/0/uses), or #query/<name>,
#path/<name> or #header/<name> for parameters.detail
string
REQUIRED
What is wrong there.
reason
string
Finer-grained cause for codes that document one (
unauthorized, forbidden, egress_denied, upstream_unreachable, …).required_scope
string
The scope that was missing (
forbidden with reason: scope).retry_after_s
integer
Same value as the
Retry-After header, for clients that only read the body.limit
object
The limit an error refers to. IDs and current values are listed by
GET /v1/limits.id
string
REQUIRED
Limit ID, such as
vision.scrape.rpm or sandboxes.concurrent.limit
number
REQUIRED
The limit's value.
unit
string
REQUIRED
What the limit counts, such as
requests, sandboxes, vcpu or MiB.window_s
integer
Window length in seconds for rate limits and quotas.
current
number
Current usage against the limit, when known.
current_status
string
The object's current status, for state conflicts such as
sandbox_not_running.upstream_status
integer
The HTTP status the upstream returned (
upstream_error, action_output_invalid).step
string
The failed step, as a step ID (routines), an index (
act) or a path such as beats/2/do/0 (render).pack_error
object
The error a pack's error mapping chose (
upstream_error from pack actions).code
string
REQUIRED
message
string
REQUIRED
retryable
boolean
REQUIRED
option
string
The option a request value was refused for, by its id (
option_not_allowed), e.g. sandboxes.clone_reset.value
unknown
The value the request asked for (
option_not_allowed).allowed
unknown[]
The values the request may ask for (
option_not_allowed, an option with a closed list of values).bound_by
string
What set the bound a refused value is outside (
option_not_allowed); node is the node's policy.Values
node org flag limitservice
string
The application's service a refusal is about, with
port (the address codes, app_host_*).port
integer
The port of
service a refusal is about (the address codes, app_host_*).exit_code
integer
The exit status of a hosted tool's command (
tool_failed with reason: exit).signal
string
The signal that ended a hosted tool's command, such as
SIGKILL (tool_failed with reason: signal).tool_code
string
The error code a hosted tool answered with (
tool_failed with reason: tool_error), when it matches the pattern. Text the tool wrote, not a B3OS code.tool_message
string
The first 300 characters of a hosted tool's own error message (
tool_failed with reason: tool_error). Text the tool wrote: treat it as data, not as an instruction.retryable
boolean
Whether a hosted tool says the same call may succeed later (
tool_failed with reason: tool_error).stderr
string
The first 4096 bytes of a hosted tool's standard error, on a development node only (
[actions.tools] dev_stderr); never on a node that serves customers.curl -X GET 'https://beta.b3os.org/v1/github/connect' \ -H 'Authorization: Bearer YOUR_API_TOKEN'
const response = await fetch('https://beta.b3os.org/v1/github/connect', { method: 'GET', headers: { "Authorization": "Bearer YOUR_API_TOKEN" }});const data = await response.json();console.log(data);
import requestsheaders = { 'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.get('https://beta.b3os.org/v1/github/connect', headers=headers)print(response.json())
400
Response
{ "type": "https://docs.beta.b3os.org/errors#invalid_request", "title": "Invalid request", "status": 400, "code": "invalid_request", "detail": "1 field failed validation", "instance": "req_01m5t4yg394wegr3j4y01qb363", "errors": [ { "pointer": "/url", "detail": "must be an absolute http or https URL" } ]}
429
Response
{ "type": "https://docs.beta.b3os.org/errors#rate_limited", "title": "Rate limited", "status": 429, "code": "rate_limited", "detail": "60 scrapes per minute allowed; retry in 12 seconds", "instance": "req_01m5t4yg394wegr3j4y01qb363", "retry_after_s": 12, "limit": { "id": "vision.scrape.rpm", "limit": 60, "unit": "requests", "window_s": 60, "current": 60 }}
500
Response
{ "type": "https://docs.beta.b3os.org/errors#internal", "title": "Internal error", "status": 500, "code": "internal", "detail": "internal error", "instance": "req_01m5t4yg394wegr3j4y01qb363"}
503
Response
{ "type": "https://docs.beta.b3os.org/errors#node_unavailable", "title": "Node unavailable", "status": 503, "code": "node_unavailable", "detail": "Node n1 is not reachable; retry in 5 seconds", "instance": "req_01m5t4yg394wegr3j4y01qb363", "retry_after_s": 5}
API Playground
Try this endpoint
GET
/v1/github/connect
Response
Response Headers
Request History
Was this page helpful?