4.7 KiB
Google API communication
Sluzba poskytuje obecnou komunikacni vrstvu pro Google API. Neobsahuje secrets ve zdrojovem kodu a pro verejne routovani pouziva ROOT_PATH, aby Swagger/OpenAPI fungoval za AppFactory prefixem /apps/<app-id>.
Discovery
GET /google/discovery/apisvraci seznam Google API dostupnych pres Google Discovery service.GET /google/discovery/apis/{api}/{version}/restvraci REST discovery dokument konkretniho API, napr.drive/v3.
Discovery endpointy slouzi k dohledani dostupnych resource, metod, schema a OAuth scope pro konkretni Google API.
OAuth
POST /google/oauth/tokenpodporujeauthorization_codearefresh_tokengrant.POST /google/oauth/service-account-tokenpodporuje service account JWT bearer flow.POST /google/oauth/revokerevokuje token.GET /google/oauth/tokeninfovraci informace o access tokenu nebo ID tokenu.
OAuth client a service account hodnoty je vhodne predavat pres environment variables:
GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETGOOGLE_SERVICE_ACCOUNT_EMAILGOOGLE_PRIVATE_KEYGOOGLE_SCOPES
Obecne REST volani
POST /google/request je genericka proxy pro Google REST API. Request obsahuje HTTP metodu, cilovou Google URL nebo kombinaci baseUrl a path, volitelne query parametry, body a autorizaci.
Priklad volani Google Drive:
{
"method": "GET",
"baseUrl": "https://www.googleapis.com",
"path": "/drive/v3/files",
"query": {
"pageSize": 10
},
"accessTokenEnv": "GOOGLE_ACCESS_TOKEN"
}
Z bezpecnostnich duvodu jsou povolene jen HTTPS URL na Google domenach. Requesty na jine hosty sluzba odmita.
Konkretni produktove endpointy
Krome obecne proxy jsou dostupne konkretni wrappery nad nejbeznejsimi Google API:
Calendar
GET /google/calendar/calendarsPOST /google/calendar/calendarsGET /google/calendar/calendars/{calendarId}PATCH /google/calendar/calendars/{calendarId}DELETE /google/calendar/calendars/{calendarId}GET /google/calendar/calendars/{calendarId}/eventsPOST /google/calendar/calendars/{calendarId}/eventsGET /google/calendar/calendars/{calendarId}/events/{eventId}PATCH /google/calendar/calendars/{calendarId}/events/{eventId}DELETE /google/calendar/calendars/{calendarId}/events/{eventId}POST /google/calendar/calendars/{calendarId}/events/{eventId}/move
Sheets
POST /google/sheets/spreadsheetsGET /google/sheets/spreadsheets/{spreadsheetId}POST /google/sheets/spreadsheets/{spreadsheetId}/batch-updateGET /google/sheets/spreadsheets/{spreadsheetId}/values?range=Sheet1!A1:B10PUT /google/sheets/spreadsheets/{spreadsheetId}/values?range=Sheet1!A1POST /google/sheets/spreadsheets/{spreadsheetId}/values/append?range=Sheet1!A1POST /google/sheets/spreadsheets/{spreadsheetId}/values/batch-updatePOST /google/sheets/spreadsheets/{spreadsheetId}/values/batch-clear
Drive
GET /google/drive/filesPOST /google/drive/filesGET /google/drive/files/{fileId}PATCH /google/drive/files/{fileId}DELETE /google/drive/files/{fileId}GET /google/drive/files/{fileId}/export?mimeType=application/pdfGET /google/drive/files/{fileId}/permissionsPOST /google/drive/files/{fileId}/permissionsDELETE /google/drive/files/{fileId}/permissions/{permissionId}
Gmail
GET /google/gmail/profileGET /google/gmail/messagesGET /google/gmail/messages/{messageId}POST /google/gmail/messages/sendGET /google/gmail/labelsPOST /google/gmail/labels
Docs, Slides a Forms
POST /google/docs/documentsGET /google/docs/documents/{documentId}POST /google/docs/documents/{documentId}/batch-updatePOST /google/slides/presentationsGET /google/slides/presentations/{presentationId}POST /google/slides/presentations/{presentationId}/batch-updatePOST /google/forms/formsGET /google/forms/forms/{formId}POST /google/forms/forms/{formId}/batch-updateGET /google/forms/forms/{formId}/responses
People a Tasks
GET /google/people/connectionsGET /google/people/{resourceName}POST /google/people/contactsPATCH /google/people/{resourceName}DELETE /google/people/{resourceName}GET /google/tasks/listsPOST /google/tasks/listsGET /google/tasks/lists/{tasklistId}/tasksPOST /google/tasks/lists/{tasklistId}/tasksPATCH /google/tasks/lists/{tasklistId}/tasks/{taskId}DELETE /google/tasks/lists/{tasklistId}/tasks/{taskId}
AppFactory overeni
Po deploy over:
GET /apps/google-service/healthGET /apps/google-service/docsGET /apps/google-service/openapi.json
OpenAPI dokument musi obsahovat servers[0].url s hodnotou ROOT_PATH, napr. /apps/google-service, aby Swagger UI volalo endpointy pres verejnou proxy cestu.