Files
google-service/README.md
T
JiriUhlir 54247186cf rozsireni
2026-06-15 15:19:01 +02:00

105 lines
3.0 KiB
Markdown

# google-service
Node.js TypeScript sluzba pro komunikaci s Google API za AppFactory reverse proxy.
## Endpointy
- `GET /`
- `GET /health`
- `GET /docs`
- `GET /openapi.json`
- `GET /google/discovery/apis`
- `GET /google/discovery/apis/{api}/{version}/rest`
- `POST /google/oauth/token`
- `POST /google/oauth/service-account-token`
- `POST /google/oauth/revoke`
- `GET /google/oauth/tokeninfo`
- `GET|POST|PATCH|DELETE /google/calendar/...`
- `GET|POST|PUT /google/sheets/...`
- `GET|POST|PATCH|DELETE /google/drive/...`
- `GET|POST /google/gmail/...`
- `GET|POST /google/docs/...`
- `GET|POST /google/slides/...`
- `GET|POST /google/forms/...`
- `GET|POST|PATCH|DELETE /google/people/...`
- `GET|POST|PATCH|DELETE /google/tasks/...`
- `POST /google/request`
## Konfigurace
Volitelne environment variables:
- `ROOT_PATH` - verejny prefix za AppFactory proxy, napr. `/apps/google-service`
- `PORT` - port aplikace, vychozi hodnota je `3000`
- `GOOGLE_CLIENT_ID` a `GOOGLE_CLIENT_SECRET` - OAuth client pro authorization code a refresh token flow
- `GOOGLE_SERVICE_ACCOUNT_EMAIL`, `GOOGLE_PRIVATE_KEY`, `GOOGLE_SCOPES` - service account JWT flow
- `GOOGLE_API_KEY` - API key pro Google API, ktere ji podporuji
Secrets se nevraci v zadnem endpointu a neloguji se.
## Obecne volani Google API
`POST /google/request` umi volat libovolny HTTPS endpoint na Google domene. Autorizace muze jit pres:
- `Authorization: Bearer <token>` header na requestu do sluzby
- `accessToken` v body
- `accessTokenEnv` v body, napr. `GOOGLE_ACCESS_TOKEN`
- `GOOGLE_API_KEY`, `apiKey` nebo `apiKeyEnv` pro endpointy podporujici API key
Priklad:
```json
{
"method": "GET",
"baseUrl": "https://www.googleapis.com",
"path": "/drive/v3/files",
"query": {
"pageSize": 10
},
"accessTokenEnv": "GOOGLE_ACCESS_TOKEN"
}
```
## Konkretni Google API wrappery
Sluzba ma konkretni endpointy pro bezne Google produkty, aby klient nemusel skladat cilove Google URL sam:
- Calendar: kalendare, eventy, presun eventu
- Sheets: spreadsheet metadata, batch update, cteni hodnot, update hodnot, append, batch clear
- Drive: soubory, export, opravneni
- Gmail: profil, zpravy, odeslani zpravy, labels
- Docs: vytvoreni dokumentu, nacteni dokumentu, batch update
- Slides: vytvoreni prezentace, nacteni prezentace, batch update
- Forms: vytvoreni formulare, nacteni formulare, batch update, responses
- People: connections, kontakt, vytvoreni/uprava/smazani kontaktu
- Tasks: task lists, tasky, uprava/smazani tasku
Autorizace je stejna jako u obecne proxy: `Authorization: Bearer <token>`, pripadne `accessToken`, `accessTokenEnv`, `apiKey` nebo `apiKeyEnv` v JSON body.
Priklad vytvoreni udalosti:
```json
POST /google/calendar/calendars/primary/events
{
"summary": "Schuzka",
"start": {
"dateTime": "2026-06-15T10:00:00+02:00"
},
"end": {
"dateTime": "2026-06-15T11:00:00+02:00"
}
}
```
Priklad append do Google Sheets:
```json
POST /google/sheets/spreadsheets/{spreadsheetId}/values/append?range=Sheet1!A1
{
"majorDimension": "ROWS",
"values": [
["A", "B", "C"]
]
}
```