Key Value API
1
4fbf02fc-0329-4291-aac3-0143969167c4
Promise API
2
4fbf02fc-0329-4291-aac3-0143969167c4
Worker API
8
fc0b5887-cca5-4261-b6b7-73711f6f23b0
Token API
7
fc0b5887-cca5-4261-b6b7-73711f6f23b0
Template API
6
fc0b5887-cca5-4261-b6b7-73711f6f23b0
Project policy API
5
fc0b5887-cca5-4261-b6b7-73711f6f23b0
Project grant API
4
fc0b5887-cca5-4261-b6b7-73711f6f23b0
Project API
3
fc0b5887-cca5-4261-b6b7-73711f6f23b0
Login API
2
fc0b5887-cca5-4261-b6b7-73711f6f23b0
Account API
1
fc0b5887-cca5-4261-b6b7-73711f6f23b0
Breaking changes August 2023
1
726cfb0b-bffe-41ba-98b4-94069569ec3c
Overview
0
726cfb0b-bffe-41ba-98b4-94069569ec3c
Tier 4 languages
4
03501aa5-572b-4129-aa0a-9e9fe9f5d3fc
Python
4
54bda586-0bf3-430e-93e5-6d8c578372bd
Overview
0
ac8f610e-7e8f-465d-9e32-4b6ae0aba3b5
Overview
0
0f58ad57-8cb7-4a64-8aed-c7bea90c37f9
Overview
0
03501aa5-572b-4129-aa0a-9e9fe9f5d3fc
Overview
0
54bda586-0bf3-430e-93e5-6d8c578372bd
Overview
0
9b92ca64-009f-47e8-9457-b544f786d8af
Quickstart
2
1d167981-dd90-40ab-8023-3b2013ceb5c5
Overview
0
1aa11fd4-1dcf-4c87-8b46-5c15ca815d61
Overview
0
4fbf02fc-0329-4291-aac3-0143969167c4
Overview
0
d0be080a-56f4-481a-91d3-ba7d30c144f4
Common tooling
1
03501aa5-572b-4129-aa0a-9e9fe9f5d3fc
C
3
54bda586-0bf3-430e-93e5-6d8c578372bd
Go
2
54bda586-0bf3-430e-93e5-6d8c578372bd
Grain
3
9b92ca64-009f-47e8-9457-b544f786d8af
Swift
1
9b92ca64-009f-47e8-9457-b544f786d8af
C#
3
9b92ca64-009f-47e8-9457-b544f786d8af
Zig
2
9b92ca64-009f-47e8-9457-b544f786d8af
Rust
1
54bda586-0bf3-430e-93e5-6d8c578372bd
Overview
0
fc0b5887-cca5-4261-b6b7-73711f6f23b0
Overview
0
62133a19-c114-4a29-a74b-f986d118e157
Why Golem?
1
1d167981-dd90-40ab-8023-3b2013ceb5c5
Overview
0
1d167981-dd90-40ab-8023-3b2013ceb5c5
API Gateway
308adf1f-525e-460e-81c9-6ea00d1dbca4
d0be080a-56f4-481a-91d3-ba7d30c144f4
4
Release notes
726cfb0b-bffe-41ba-98b4-94069569ec3c
d0be080a-56f4-481a-91d3-ba7d30c144f4
9
Component interface
ac8f610e-7e8f-465d-9e32-4b6ae0aba3b5
d0be080a-56f4-481a-91d3-ba7d30c144f4
7
Getting Started
1d167981-dd90-40ab-8023-3b2013ceb5c5
d0be080a-56f4-481a-91d3-ba7d30c144f4
1
Building Components
03501aa5-572b-4129-aa0a-9e9fe9f5d3fc
d0be080a-56f4-481a-91d3-ba7d30c144f4
2
Tier 2 languages
54bda586-0bf3-430e-93e5-6d8c578372bd
03501aa5-572b-4129-aa0a-9e9fe9f5d3fc
2
Promises
62133a19-c114-4a29-a74b-f986d118e157
d0be080a-56f4-481a-91d3-ba7d30c144f4
3
Tier 3 languages
9b92ca64-009f-47e8-9457-b544f786d8af
03501aa5-572b-4129-aa0a-9e9fe9f5d3fc
3
Golem CLI
1aa11fd4-1dcf-4c87-8b46-5c15ca815d61
d0be080a-56f4-481a-91d3-ba7d30c144f4
4
REST API
fc0b5887-cca5-4261-b6b7-73711f6f23b0
d0be080a-56f4-481a-91d3-ba7d30c144f4
5
Runtime API
4fbf02fc-0329-4291-aac3-0143969167c4
d0be080a-56f4-481a-91d3-ba7d30c144f4
6
FAQ
0f58ad57-8cb7-4a64-8aed-c7bea90c37f9
d0be080a-56f4-481a-91d3-ba7d30c144f4
7

Login API

fc0b5887-cca5-4261-b6b7-73711f6f23b0

Login API

Summary

The login endpoints are implementing an OAuth2 flow.

Acquire token with OAuth2 authorization

MethodPathRequestResponse
POST/v1/oauth2?provider=github&access_token=Y-UnsafeToken JSON

Response format:

{

"data": {

"id": "d7746eb5-7a7f-4e40-abfa-a736a3a28ef9",

"accountId": "ae9b9f24-cfba-4dc6-92c6-c6fecdee88b5",

"createdAt": "2023-09-05T13:40:13.364870Z",

"expiresAt": "2100-01-01T01:00:00Z"

},

"secret": "03f17466-202f-43ac-86cc-52e6c6a42d2d"

}

Explanation

Gets a token by authorizing with an external OAuth2 provider. Currently only github is supported.

In the response:

  • id is the identifier of the token itself
  • accountId is the account’s identifier, can be used on the account API
  • secret is the secret key to be sent in the Authorization header as a bearer token for all the other endpoints

Example cURL:

curl -X POST 'https://release.api.golem.cloud/v1/oauth2?provider=github&access_token=github-access-token'

Get information about a token

MethodPathRequestResponse
GET/v1/login/token-Token JSON

Response format:

{

"id": "d7746eb5-7a7f-4e40-abfa-a736a3a28ef9",

"accountId": "ae9b9f24-cfba-4dc6-92c6-c6fecdee88b5",

"createdAt": "2023-09-05T13:40:13.364870Z",

"expiresAt": "2100-01-01T01:00:00Z"

}

Explanation

Gets information about a token that is selected by the secret key passed in the Authorization header. The JSON is the same as the data object in the oauth2 endpoint’s response.

Example cURL:

curl 'https://release.api.golem.cloud/v1/login/token'

-H 'Authorization: Bearer 03f17466-202f-43ac-86cc-52e6c6a42d2d'

Start GitHub OAuth2 interactive flow

An interactive authorization flow can be initiated with

MethodPathRequestResponse
POST/oauth2/device/start-OAuth2Data JSON

Response format:

{

"url": "https://github.com/login/device",

"userCode": "E643-F4E1",

"expires": "2023-09-29T09:38:50.247009215Z",

"encodedSession": "..."

}

Explanation

Starts an interactive authorization flow. The user must open the returned url and enter the userCode in a form before the expires deadline. Then the finish GitHub OAuth2 interactive flow endpoint must be called with the encoded session to finish the flow.

Example cURL:

curl -X POST 'https://release.api.golem.cloud/oauth2/device/start

Finish GitHub OAuth2 interactive flow

An interactive authorization flow can be initiated with

MethodPathRequestResponse
POST/oauth2/device/complete"..." encoded session JSON stringUnsafeToken JSON

Request format:

A JSON string containing the encodedSession from the start endpoint’s response.

Response format:

{

"data": {

"id": "d7746eb5-7a7f-4e40-abfa-a736a3a28ef9",

"accountId": "ae9b9f24-cfba-4dc6-92c6-c6fecdee88b5",

"createdAt": "2023-09-05T13:40:13.364870Z",

"expiresAt": "2100-01-01T01:00:00Z"

},

"secret": "03f17466-202f-43ac-86cc-52e6c6a42d2d"

}

Explanation

Finishes an interactive authorization flow. The returned JSON is equivalent to the oauth2 endpoint’s response.

Example cURL:

curl

-X POST 'https://release.api.golem.cloud/oauth2/device/complete'

-H 'Content-Type: application/json'

-d '"..."'

Login API errors

All login endpoints can return with the following errors:

StatusBodyDescription
400{ "errors": ["error1", ...] }Invalid request, returning with a list of issues detected in the request.
401{ "message": "..." }Failed to login
403{ "message": "..." }Whitelisting - Golem Cloud may temporarily restrict new account creation
500{ "error": "..." }External service call failed during login