@graph8/sdk 0.251.0 → 0.262.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -2
- package/dist/cli.js +216 -0
- package/dist/index.d.mts +105 -7
- package/dist/index.d.ts +105 -7
- package/dist/index.js +44 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +44 -3
- package/dist/index.mjs.map +1 -1
- package/dist/react.d.mts +103 -7
- package/dist/react.d.ts +103 -7
- package/dist/react.js +62 -11
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +53 -12
- package/dist/react.mjs.map +1 -1
- package/dist/types/README.md +7 -0
- package/dist/types/agency.d.ts +20 -0
- package/dist/types/agentSetup.d.ts +57 -0
- package/dist/types/api.d.ts +127 -0
- package/dist/types/appClient.d.ts +99 -0
- package/dist/types/appPlatform.d.ts +269 -0
- package/dist/types/appTokens.d.ts +125 -0
- package/dist/types/apps.d.ts +130 -0
- package/dist/types/audiences.d.ts +88 -0
- package/dist/types/calendar.d.ts +55 -0
- package/dist/types/campaigns.d.ts +61 -0
- package/dist/types/chat.d.ts +35 -0
- package/dist/types/cli.d.ts +14 -0
- package/dist/types/companies.d.ts +123 -0
- package/dist/types/contacts.d.ts +200 -0
- package/dist/types/copilot.d.ts +31 -0
- package/dist/types/core.d.ts +1052 -0
- package/dist/types/deals.d.ts +215 -0
- package/dist/types/enrich.d.ts +51 -0
- package/dist/types/fields.d.ts +84 -0
- package/dist/types/forms.d.ts +16 -0
- package/dist/types/http.d.ts +141 -0
- package/dist/types/inbox.d.ts +123 -0
- package/dist/types/index.d.ts +63 -0
- package/dist/types/intent.d.ts +196 -0
- package/dist/types/lists.d.ts +44 -0
- package/dist/types/mailboxes.d.ts +240 -0
- package/dist/types/marketplace.d.ts +62 -0
- package/dist/types/meetings.d.ts +70 -0
- package/dist/types/newsletter.d.ts +212 -0
- package/dist/types/notes.d.ts +57 -0
- package/dist/types/objects.d.ts +281 -0
- package/dist/types/pipelines.d.ts +135 -0
- package/dist/types/quotes.d.ts +143 -0
- package/dist/types/react.d.ts +978 -0
- package/dist/types/search.d.ts +99 -0
- package/dist/types/sequences.d.ts +255 -0
- package/dist/types/signals.d.ts +28 -0
- package/dist/types/skills.d.ts +176 -0
- package/dist/types/snippet.d.ts +24 -0
- package/dist/types/studio.d.ts +161 -0
- package/dist/types/tasks.d.ts +101 -0
- package/dist/types/types.d.ts +45 -0
- package/dist/types/utils.d.ts +21 -0
- package/dist/types/version.d.ts +10 -0
- package/dist/types/visitors.d.ts +29 -0
- package/dist/types/voice.d.ts +304 -0
- package/dist/types/webhooks.d.ts +71 -0
- package/dist/types/workflows.d.ts +229 -0
- package/docs/agents.md +748 -0
- package/docs/api/README.md +165 -0
- package/docs/api/accounts.d.ts +396 -0
- package/docs/api/accounts.md +644 -0
- package/docs/api/adCampaigns.d.ts +707 -0
- package/docs/api/adCampaigns.md +1091 -0
- package/docs/api/adCreatives.d.ts +996 -0
- package/docs/api/adCreatives.md +1708 -0
- package/docs/api/agency.d.ts +556 -0
- package/docs/api/agency.md +845 -0
- package/docs/api/agent.d.ts +330 -0
- package/docs/api/agent.md +514 -0
- package/docs/api/agents.d.ts +1622 -0
- package/docs/api/agents.md +2860 -0
- package/docs/api/aiInbox.d.ts +1984 -0
- package/docs/api/aiInbox.md +3490 -0
- package/docs/api/analytics.d.ts +1273 -0
- package/docs/api/analytics.md +2095 -0
- package/docs/api/apiKeys.d.ts +252 -0
- package/docs/api/apiKeys.md +318 -0
- package/docs/api/appDeployments.d.ts +236 -0
- package/docs/api/appDeployments.md +471 -0
- package/docs/api/appDomains.d.ts +171 -0
- package/docs/api/appDomains.md +281 -0
- package/docs/api/appLogs.d.ts +120 -0
- package/docs/api/appLogs.md +159 -0
- package/docs/api/appObjects.d.ts +415 -0
- package/docs/api/appObjects.md +568 -0
- package/docs/api/appPages.d.ts +557 -0
- package/docs/api/appPages.md +796 -0
- package/docs/api/appPlatformTokens.d.ts +123 -0
- package/docs/api/appPlatformTokens.md +172 -0
- package/docs/api/appointments.d.ts +2361 -0
- package/docs/api/appointments.md +3917 -0
- package/docs/api/apps.d.ts +822 -0
- package/docs/api/apps.md +1342 -0
- package/docs/api/assertUpsert.d.ts +286 -0
- package/docs/api/assertUpsert.md +370 -0
- package/docs/api/audienceSyncs.d.ts +259 -0
- package/docs/api/audienceSyncs.md +395 -0
- package/docs/api/brandKit.d.ts +686 -0
- package/docs/api/brandKit.md +1133 -0
- package/docs/api/bugReports.d.ts +181 -0
- package/docs/api/bugReports.md +268 -0
- package/docs/api/by-path.md +3260 -0
- package/docs/api/calendarInvites.d.ts +117 -0
- package/docs/api/calendarInvites.md +148 -0
- package/docs/api/campaignWorkflows.d.ts +152 -0
- package/docs/api/campaignWorkflows.md +200 -0
- package/docs/api/campaigns.d.ts +721 -0
- package/docs/api/campaigns.md +1236 -0
- package/docs/api/channels.d.ts +171 -0
- package/docs/api/channels.md +235 -0
- package/docs/api/cliCampaigns.d.ts +205 -0
- package/docs/api/cliCampaigns.md +256 -0
- package/docs/api/cliPipelines.d.ts +324 -0
- package/docs/api/cliPipelines.md +562 -0
- package/docs/api/clickHouse.d.ts +115 -0
- package/docs/api/clickHouse.md +138 -0
- package/docs/api/companies.d.ts +1636 -0
- package/docs/api/companies.md +2211 -0
- package/docs/api/companyIntelligence.d.ts +299 -0
- package/docs/api/companyIntelligence.md +488 -0
- package/docs/api/contacts.d.ts +2173 -0
- package/docs/api/contacts.md +3143 -0
- package/docs/api/content.d.ts +968 -0
- package/docs/api/content.md +1667 -0
- package/docs/api/contentGridSkills.d.ts +177 -0
- package/docs/api/contentGridSkills.md +271 -0
- package/docs/api/copilot.d.ts +1017 -0
- package/docs/api/copilot.md +1765 -0
- package/docs/api/crmSyncs.d.ts +215 -0
- package/docs/api/crmSyncs.md +301 -0
- package/docs/api/customerSuccess.d.ts +491 -0
- package/docs/api/customerSuccess.md +776 -0
- package/docs/api/deals.d.ts +1697 -0
- package/docs/api/deals.md +2436 -0
- package/docs/api/deliverability.d.ts +418 -0
- package/docs/api/deliverability.md +677 -0
- package/docs/api/desk.d.ts +1765 -0
- package/docs/api/desk.md +3007 -0
- package/docs/api/dialer.d.ts +1185 -0
- package/docs/api/dialer.md +2166 -0
- package/docs/api/dialerAnalytics.d.ts +187 -0
- package/docs/api/dialerAnalytics.md +257 -0
- package/docs/api/documents.d.ts +895 -0
- package/docs/api/documents.md +1440 -0
- package/docs/api/duplicates.d.ts +195 -0
- package/docs/api/duplicates.md +315 -0
- package/docs/api/eSign.d.ts +38 -0
- package/docs/api/eSign.md +54 -0
- package/docs/api/eSignature.d.ts +242 -0
- package/docs/api/eSignature.md +341 -0
- package/docs/api/enrichment.d.ts +3207 -0
- package/docs/api/enrichment.md +5225 -0
- package/docs/api/events.d.ts +115 -0
- package/docs/api/events.md +105 -0
- package/docs/api/fields.d.ts +482 -0
- package/docs/api/fields.md +566 -0
- package/docs/api/forms.d.ts +1012 -0
- package/docs/api/forms.md +1542 -0
- package/docs/api/gtmCampaigns.d.ts +662 -0
- package/docs/api/gtmCampaigns.md +1044 -0
- package/docs/api/gtmContext.d.ts +1187 -0
- package/docs/api/gtmContext.md +2112 -0
- package/docs/api/gtmDeliverability.d.ts +60 -0
- package/docs/api/gtmDeliverability.md +63 -0
- package/docs/api/gtmKnowledgeBase.d.ts +76 -0
- package/docs/api/gtmKnowledgeBase.md +91 -0
- package/docs/api/gtmLaunchHelpers.d.ts +123 -0
- package/docs/api/gtmLaunchHelpers.md +148 -0
- package/docs/api/gtmLibrary.d.ts +448 -0
- package/docs/api/gtmLibrary.md +780 -0
- package/docs/api/health.d.ts +39 -0
- package/docs/api/health.md +58 -0
- package/docs/api/imageLibrary.d.ts +341 -0
- package/docs/api/imageLibrary.md +569 -0
- package/docs/api/imports.d.ts +157 -0
- package/docs/api/imports.md +174 -0
- package/docs/api/inbox.d.ts +709 -0
- package/docs/api/inbox.md +1067 -0
- package/docs/api/install.d.ts +213 -0
- package/docs/api/install.md +317 -0
- package/docs/api/installedApps.d.ts +131 -0
- package/docs/api/installedApps.md +241 -0
- package/docs/api/integrationStatus.d.ts +142 -0
- package/docs/api/integrationStatus.md +205 -0
- package/docs/api/integrations.d.ts +2327 -0
- package/docs/api/integrations.md +3791 -0
- package/docs/api/intent.d.ts +482 -0
- package/docs/api/intent.md +858 -0
- package/docs/api/knowledge.d.ts +501 -0
- package/docs/api/knowledge.md +843 -0
- package/docs/api/knowledgeBase.d.ts +84 -0
- package/docs/api/knowledgeBase.md +96 -0
- package/docs/api/landingPages.d.ts +1411 -0
- package/docs/api/landingPages.md +2488 -0
- package/docs/api/leads.d.ts +133 -0
- package/docs/api/leads.md +180 -0
- package/docs/api/library.d.ts +217 -0
- package/docs/api/library.md +338 -0
- package/docs/api/linkedIn.d.ts +227 -0
- package/docs/api/linkedIn.md +289 -0
- package/docs/api/linkedInOutreach.d.ts +727 -0
- package/docs/api/linkedInOutreach.md +990 -0
- package/docs/api/lists.d.ts +1106 -0
- package/docs/api/lists.md +1609 -0
- package/docs/api/logs.d.ts +71 -0
- package/docs/api/logs.md +70 -0
- package/docs/api/mailboxes.d.ts +1050 -0
- package/docs/api/mailboxes.md +1690 -0
- package/docs/api/marketingIntelligence.d.ts +256 -0
- package/docs/api/marketingIntelligence.md +454 -0
- package/docs/api/marketplace.d.ts +3173 -0
- package/docs/api/marketplace.md +5953 -0
- package/docs/api/mcp.d.ts +69 -0
- package/docs/api/mcp.md +69 -0
- package/docs/api/me.d.ts +54 -0
- package/docs/api/me.md +56 -0
- package/docs/api/meetings.d.ts +539 -0
- package/docs/api/meetings.md +747 -0
- package/docs/api/newsletter.d.ts +1613 -0
- package/docs/api/newsletter.md +2746 -0
- package/docs/api/notes.d.ts +517 -0
- package/docs/api/notes.md +888 -0
- package/docs/api/notifications.d.ts +94 -0
- package/docs/api/notifications.md +105 -0
- package/docs/api/objects.d.ts +621 -0
- package/docs/api/objects.md +1098 -0
- package/docs/api/openSearch.d.ts +234 -0
- package/docs/api/openSearch.md +297 -0
- package/docs/api/ops.d.ts +299 -0
- package/docs/api/ops.md +339 -0
- package/docs/api/orgGovernance.d.ts +393 -0
- package/docs/api/orgGovernance.md +623 -0
- package/docs/api/orgVideos.d.ts +184 -0
- package/docs/api/orgVideos.md +252 -0
- package/docs/api/organizationSettings.d.ts +626 -0
- package/docs/api/organizationSettings.md +911 -0
- package/docs/api/phoneNumbers.d.ts +484 -0
- package/docs/api/phoneNumbers.md +777 -0
- package/docs/api/profile.d.ts +329 -0
- package/docs/api/profile.md +540 -0
- package/docs/api/programmaticPages.d.ts +400 -0
- package/docs/api/programmaticPages.md +626 -0
- package/docs/api/providerDomains.d.ts +866 -0
- package/docs/api/providerDomains.md +1446 -0
- package/docs/api/providerUsage.d.ts +129 -0
- package/docs/api/providerUsage.md +186 -0
- package/docs/api/public.d.ts +69 -0
- package/docs/api/public.md +78 -0
- package/docs/api/publicCopilot.d.ts +67 -0
- package/docs/api/publicCopilot.md +80 -0
- package/docs/api/publicSignals.d.ts +66 -0
- package/docs/api/publicSignals.md +71 -0
- package/docs/api/publicVisitors.d.ts +97 -0
- package/docs/api/publicVisitors.md +118 -0
- package/docs/api/quotes.d.ts +1564 -0
- package/docs/api/quotes.md +2553 -0
- package/docs/api/radar.d.ts +808 -0
- package/docs/api/radar.md +1431 -0
- package/docs/api/radarReports.d.ts +208 -0
- package/docs/api/radarReports.md +306 -0
- package/docs/api/recordRoles.d.ts +143 -0
- package/docs/api/recordRoles.md +175 -0
- package/docs/api/repos.d.ts +146 -0
- package/docs/api/repos.md +211 -0
- package/docs/api/research.d.ts +295 -0
- package/docs/api/research.md +534 -0
- package/docs/api/revenue.d.ts +402 -0
- package/docs/api/revenue.md +608 -0
- package/docs/api/revenueAnalytics.d.ts +147 -0
- package/docs/api/revenueAnalytics.md +212 -0
- package/docs/api/revenueLifecycle.d.ts +207 -0
- package/docs/api/revenueLifecycle.md +274 -0
- package/docs/api/revenueRecords.d.ts +372 -0
- package/docs/api/revenueRecords.md +563 -0
- package/docs/api/roles.d.ts +431 -0
- package/docs/api/roles.md +812 -0
- package/docs/api/salesCoach.d.ts +877 -0
- package/docs/api/salesCoach.md +1540 -0
- package/docs/api/sandbox.d.ts +210 -0
- package/docs/api/sandbox.md +380 -0
- package/docs/api/scans.d.ts +104 -0
- package/docs/api/scans.md +136 -0
- package/docs/api/scheduleBuy.d.ts +293 -0
- package/docs/api/scheduleBuy.md +431 -0
- package/docs/api/scraping.d.ts +266 -0
- package/docs/api/scraping.md +383 -0
- package/docs/api/sdrAnalytics.d.ts +138 -0
- package/docs/api/sdrAnalytics.md +246 -0
- package/docs/api/search.d.ts +598 -0
- package/docs/api/search.md +866 -0
- package/docs/api/seo.d.ts +447 -0
- package/docs/api/seo.md +660 -0
- package/docs/api/sequenceLifecycle.d.ts +439 -0
- package/docs/api/sequenceLifecycle.md +513 -0
- package/docs/api/sequences.d.ts +1936 -0
- package/docs/api/sequences.md +3232 -0
- package/docs/api/settings.d.ts +448 -0
- package/docs/api/settings.md +731 -0
- package/docs/api/signals.d.ts +1441 -0
- package/docs/api/signals.md +2526 -0
- package/docs/api/signatures.d.ts +719 -0
- package/docs/api/signatures.md +1247 -0
- package/docs/api/skills.d.ts +230 -0
- package/docs/api/skills.md +466 -0
- package/docs/api/snippet.d.ts +85 -0
- package/docs/api/snippet.md +106 -0
- package/docs/api/socialPublishing.d.ts +824 -0
- package/docs/api/socialPublishing.md +1245 -0
- package/docs/api/studioDocuments.d.ts +244 -0
- package/docs/api/studioDocuments.md +348 -0
- package/docs/api/support.d.ts +90 -0
- package/docs/api/support.md +76 -0
- package/docs/api/suppressions.d.ts +241 -0
- package/docs/api/suppressions.md +343 -0
- package/docs/api/surveys.d.ts +847 -0
- package/docs/api/surveys.md +1223 -0
- package/docs/api/tasks.d.ts +813 -0
- package/docs/api/tasks.md +1344 -0
- package/docs/api/teamMembers.d.ts +668 -0
- package/docs/api/teamMembers.md +1040 -0
- package/docs/api/teams.d.ts +784 -0
- package/docs/api/teams.md +1395 -0
- package/docs/api/usage.d.ts +277 -0
- package/docs/api/usage.md +389 -0
- package/docs/api/visitors.d.ts +690 -0
- package/docs/api/visitors.md +1075 -0
- package/docs/api/voice.d.ts +4661 -0
- package/docs/api/voice.md +7905 -0
- package/docs/api/webAnalytics.d.ts +964 -0
- package/docs/api/webAnalytics.md +1452 -0
- package/docs/api/webChat.d.ts +1704 -0
- package/docs/api/webChat.md +2048 -0
- package/docs/api/webhooks.d.ts +251 -0
- package/docs/api/webhooks.md +386 -0
- package/docs/api/websiteEditor.d.ts +324 -0
- package/docs/api/websiteEditor.md +517 -0
- package/docs/api/work.d.ts +2298 -0
- package/docs/api/work.md +3096 -0
- package/docs/api/workbench.d.ts +2962 -0
- package/docs/api/workbench.md +4884 -0
- package/docs/api/workflows.d.ts +1218 -0
- package/docs/api/workflows.md +2302 -0
- package/docs/sdk-clients.md +4339 -0
- package/package.json +10 -3
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
<!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
|
|
2
|
+
|
|
3
|
+
# `g8.api.appDomains`: App Domains
|
|
4
|
+
|
|
5
|
+
5 operations (2 read, 2 write, 1 destructive).
|
|
6
|
+
|
|
7
|
+
4 of these also have a hand-written method (`g8.appPlatform`), marked **★** below. Prefer the hand-written method when one exists: it unwraps the `data` envelope and takes friendlier arguments. See [../sdk-clients.md](../sdk-clients.md).
|
|
8
|
+
|
|
9
|
+
Every example below assumes this setup (server-side, API key):
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { g8 } from "@graph8/sdk";
|
|
13
|
+
|
|
14
|
+
g8.init({ apiKey: process.env.G8_API_KEY! });
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Example values are placeholders that match each field's type. Only required fields are shown. Every example is type-checked against the SDK in CI.
|
|
18
|
+
|
|
19
|
+
Exact TypeScript types for every operation on this page, and every schema they use: [appDomains.d.ts](appDomains.d.ts).
|
|
20
|
+
|
|
21
|
+
## Operations
|
|
22
|
+
|
|
23
|
+
| Call | HTTP | Tier | Scope | Summary |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| [`claimAppDomain`](#op-claimappdomain) ★ | `POST /api/v1/apps/{app_id}/domains` | write | `apps:write` | Claim App Domain |
|
|
26
|
+
| [`listAppDomains`](#op-listappdomains) ★ | `GET /api/v1/apps/{app_id}/domains` | read | `apps:read` | List App Domains |
|
|
27
|
+
| [`releaseAppDomain`](#op-releaseappdomain) ★ | `DELETE /api/v1/apps/{app_id}/domains/{hostname}` | destructive | `apps:delete` | Release App Domain |
|
|
28
|
+
| [`tlsAuthorize`](#op-tlsauthorize) | `GET /api/v1/app-platform/tls-authorize` | read | | Tls Authorize |
|
|
29
|
+
| [`verifyAppDomain`](#op-verifyappdomain) ★ | `POST /api/v1/apps/{app_id}/domains/{hostname}/verify` | write | `apps:write` | Verify App Domain |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
<a id="op-claimappdomain"></a>
|
|
34
|
+
|
|
35
|
+
### `g8.api.appDomains.claimAppDomain(input)`
|
|
36
|
+
|
|
37
|
+
**Claim App Domain**
|
|
38
|
+
|
|
39
|
+
- HTTP: `POST /api/v1/apps/{app_id}/domains`
|
|
40
|
+
- operationId: `claim_app_domain_apps__app_id__domains_post` (also callable as `g8.api.call("claim_app_domain_apps__app_id__domains_post", input)`)
|
|
41
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
42
|
+
- API-key scope: `apps:write`
|
|
43
|
+
- ★ Hand-written: [`g8.appPlatform.claimDomain()`](../sdk-clients.md#g8-appplatform-claimdomain)
|
|
44
|
+
|
|
45
|
+
Claim a hostname and return the TXT record proving you control it.
|
|
46
|
+
|
|
47
|
+
409 when another app already holds the host. Hostnames are globally unique,
|
|
48
|
+
and a silent overwrite would let one builder take another's traffic -- which
|
|
49
|
+
is why `claim_domain` raises rather than upserting.
|
|
50
|
+
|
|
51
|
+
**Input**
|
|
52
|
+
|
|
53
|
+
| Field | Type | Required | Description |
|
|
54
|
+
|---|---|---|---|
|
|
55
|
+
| `path.app_id` | `string` | yes | |
|
|
56
|
+
| `body` | `ClaimDomainRequest` | yes | Request body; fields below. |
|
|
57
|
+
| `headers.X-Org-Id` | `string \| null` | no | |
|
|
58
|
+
|
|
59
|
+
Body fields (`ClaimDomainRequest`):
|
|
60
|
+
|
|
61
|
+
| Field | Type | Required | Description |
|
|
62
|
+
|---|---|---|---|
|
|
63
|
+
| `body.hostname` | `string` | yes | The hostname to serve this app on. Normalized server-side: case, a trailing dot and unicode all resolve to one canonical form. max length 253 |
|
|
64
|
+
|
|
65
|
+
**Returns** `ApiResponse_DomainVerificationInstructions_`: the envelope `{ data: DomainVerificationInstructions, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
66
|
+
|
|
67
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
68
|
+
|
|
69
|
+
`DomainVerificationInstructions` fields:
|
|
70
|
+
|
|
71
|
+
| Field | Type | Required | Description |
|
|
72
|
+
|---|---|---|---|
|
|
73
|
+
| `domain` | `DomainResponse` | yes | |
|
|
74
|
+
| `record_name` | `string` | yes | Create the record at this name, e.g. _graph8-challenge.app.example.com |
|
|
75
|
+
| `record_value` | `string` | yes | |
|
|
76
|
+
| `record_type` | `string` | no | default `"TXT"` |
|
|
77
|
+
|
|
78
|
+
**Example**
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
const result = await g8.api.appDomains.claimAppDomain({ path: { app_id: "id" }, body: { hostname: "Example" } });
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
<a id="op-listappdomains"></a>
|
|
87
|
+
|
|
88
|
+
### `g8.api.appDomains.listAppDomains(input)`
|
|
89
|
+
|
|
90
|
+
**List App Domains**
|
|
91
|
+
|
|
92
|
+
- HTTP: `GET /api/v1/apps/{app_id}/domains`
|
|
93
|
+
- operationId: `list_app_domains_apps__app_id__domains_get` (also callable as `g8.api.call("list_app_domains_apps__app_id__domains_get", input)`)
|
|
94
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
95
|
+
- API-key scope: `apps:read`
|
|
96
|
+
- ★ Hand-written: [`g8.appPlatform.listDomains()`](../sdk-clients.md#g8-appplatform-listdomains)
|
|
97
|
+
|
|
98
|
+
Every hostname claimed for this app, whatever its verification state.
|
|
99
|
+
|
|
100
|
+
**Input**
|
|
101
|
+
|
|
102
|
+
| Field | Type | Required | Description |
|
|
103
|
+
|---|---|---|---|
|
|
104
|
+
| `path.app_id` | `string` | yes | |
|
|
105
|
+
| `headers.X-Org-Id` | `string \| null` | no | |
|
|
106
|
+
|
|
107
|
+
**Returns** `ApiResponse_list_DomainResponse__`: the envelope `{ data: Array<DomainResponse>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
108
|
+
|
|
109
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
110
|
+
|
|
111
|
+
`DomainResponse` fields:
|
|
112
|
+
|
|
113
|
+
| Field | Type | Required | Description |
|
|
114
|
+
|---|---|---|---|
|
|
115
|
+
| `app_id` | `string` | yes | |
|
|
116
|
+
| `domain_id` | `string` | yes | |
|
|
117
|
+
| `hostname` | `string` | yes | The canonical, normalized form -- not necessarily what was submitted. |
|
|
118
|
+
| `status` | `string` | yes | |
|
|
119
|
+
| `created_at` | `string (date-time) \| null` | no | |
|
|
120
|
+
| `verified_at` | `string (date-time) \| null` | no | |
|
|
121
|
+
|
|
122
|
+
**Example**
|
|
123
|
+
|
|
124
|
+
```ts
|
|
125
|
+
const result = await g8.api.appDomains.listAppDomains({ path: { app_id: "id" } });
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
<a id="op-releaseappdomain"></a>
|
|
131
|
+
|
|
132
|
+
### `g8.api.appDomains.releaseAppDomain(input)`
|
|
133
|
+
|
|
134
|
+
**Release App Domain**
|
|
135
|
+
|
|
136
|
+
- HTTP: `DELETE /api/v1/apps/{app_id}/domains/{hostname}`
|
|
137
|
+
- operationId: `release_app_domain_apps__app_id__domains__hostname__delete` (also callable as `g8.api.call("release_app_domain_apps__app_id__domains__hostname__delete", input)`)
|
|
138
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
139
|
+
- API-key scope: `apps:delete`
|
|
140
|
+
- ★ Hand-written: [`g8.appPlatform.releaseDomain()`](../sdk-clients.md#g8-appplatform-releasedomain)
|
|
141
|
+
|
|
142
|
+
Release a claimed hostname.
|
|
143
|
+
|
|
144
|
+
Hostnames are globally unique across every app
|
|
145
|
+
(``uq_developer_app_domains_hostname``), so one typo permanently burned that
|
|
146
|
+
host for every builder on the platform with no public way to undo it. The
|
|
147
|
+
repository had get, list, claim and set_status, and no delete at all.
|
|
148
|
+
|
|
149
|
+
A HARD delete, not a `revoked` status. The uniqueness index does not care
|
|
150
|
+
about status, so a row left behind in any state keeps the host claimed while
|
|
151
|
+
looking to the builder like it was released.
|
|
152
|
+
|
|
153
|
+
OWNERSHIP IS CHECKED AGAINST THE STORED CLAIM, not just the app in the path.
|
|
154
|
+
`_require_own_app` proves the caller owns THIS app; the second check proves
|
|
155
|
+
the hostname belongs to that same app. Without it a builder could pass their
|
|
156
|
+
own app id and any hostname, and delete a competitor's claim -- the one thing
|
|
157
|
+
global uniqueness makes irreversible.
|
|
158
|
+
|
|
159
|
+
404 for an unknown host or one held by another app, never 403: a 403 would
|
|
160
|
+
make a competitor's claim discoverable by probing.
|
|
161
|
+
|
|
162
|
+
Idempotent within your own app: releasing a host you have already released is
|
|
163
|
+
a 404, because after the first call the claim genuinely does not exist. The
|
|
164
|
+
delete itself reports whether a row went, and both answers are correct.
|
|
165
|
+
|
|
166
|
+
**Input**
|
|
167
|
+
|
|
168
|
+
| Field | Type | Required | Description |
|
|
169
|
+
|---|---|---|---|
|
|
170
|
+
| `path.app_id` | `string` | yes | |
|
|
171
|
+
| `path.hostname` | `string` | yes | |
|
|
172
|
+
| `headers.X-Org-Id` | `string \| null` | no | |
|
|
173
|
+
|
|
174
|
+
**Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
175
|
+
|
|
176
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
177
|
+
|
|
178
|
+
**Example**
|
|
179
|
+
|
|
180
|
+
```ts
|
|
181
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
182
|
+
const result = await g8.api.appDomains.releaseAppDomain({ path: { app_id: "id", hostname: "Example" } });
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
<a id="op-tlsauthorize"></a>
|
|
188
|
+
|
|
189
|
+
### `g8.api.appDomains.tlsAuthorize(input)`
|
|
190
|
+
|
|
191
|
+
**Tls Authorize**
|
|
192
|
+
|
|
193
|
+
- HTTP: `GET /api/v1/app-platform/tls-authorize`
|
|
194
|
+
- operationId: `tls_authorize_app_platform_tls_authorize_get` (also callable as `g8.api.call("tls_authorize_app_platform_tls_authorize_get", input)`)
|
|
195
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
196
|
+
- API-key scope: none published
|
|
197
|
+
|
|
198
|
+
Caddy on-demand-TLS ask endpoint. PUBLIC, UNAUTHENTICATED, FAILS CLOSED.
|
|
199
|
+
|
|
200
|
+
Caddy issues a certificate when this returns 2xx. Answering 2xx for a host we
|
|
201
|
+
do not own would let anyone who points DNS at our edge have a publicly
|
|
202
|
+
trusted certificate minted by us.
|
|
203
|
+
|
|
204
|
+
2xx ONLY for a hostname that exists AND is `verified`. Everything else is a
|
|
205
|
+
bare 404 with no body: distinguishing "unknown" from "known but unverified"
|
|
206
|
+
would make this a free oracle for which customers are onboarding.
|
|
207
|
+
|
|
208
|
+
It IS published in the contract. `include_in_schema=False` was the first
|
|
209
|
+
instinct -- it is infrastructure plumbing, not a customer API -- and it broke
|
|
210
|
+
an invariant: the operation manifest is derived from the OpenAPI spec while
|
|
211
|
+
`operation_tiers` is derived from the route table, so hiding a route makes
|
|
212
|
+
the two span different universes.
|
|
213
|
+
`test_the_manifest_covers_the_WHOLE_operation_universe` exists to catch
|
|
214
|
+
exactly that, and it went red on qa.
|
|
215
|
+
|
|
216
|
+
Hiding it was never a security control anyway -- the endpoint fails closed on
|
|
217
|
+
its own, and its existence is inferable from any Caddy config. Consistency
|
|
218
|
+
between the published contract and the route table is worth more than the
|
|
219
|
+
tidiness of an unlisted endpoint.
|
|
220
|
+
|
|
221
|
+
**Input**
|
|
222
|
+
|
|
223
|
+
| Field | Type | Required | Description |
|
|
224
|
+
|---|---|---|---|
|
|
225
|
+
| `query.domain` | `string` | yes | |
|
|
226
|
+
|
|
227
|
+
**Returns** `unknown`.
|
|
228
|
+
|
|
229
|
+
**Example**
|
|
230
|
+
|
|
231
|
+
```ts
|
|
232
|
+
const result = await g8.api.appDomains.tlsAuthorize({ query: { domain: "acme.com" } });
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
<a id="op-verifyappdomain"></a>
|
|
238
|
+
|
|
239
|
+
### `g8.api.appDomains.verifyAppDomain(input)`
|
|
240
|
+
|
|
241
|
+
**Verify App Domain**
|
|
242
|
+
|
|
243
|
+
- HTTP: `POST /api/v1/apps/{app_id}/domains/{hostname}/verify`
|
|
244
|
+
- operationId: `verify_app_domain_apps__app_id__domains__hostname__verify_post` (also callable as `g8.api.call("verify_app_domain_apps__app_id__domains__hostname__verify_post", input)`)
|
|
245
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
246
|
+
- API-key scope: `apps:write`
|
|
247
|
+
- ★ Hand-written: [`g8.appPlatform.verifyDomain()`](../sdk-clients.md#g8-appplatform-verifydomain)
|
|
248
|
+
|
|
249
|
+
Check DNS for the TXT record and advance the domain to `verified`.
|
|
250
|
+
|
|
251
|
+
Idempotent: verifying an already-verified domain re-checks and stays verified,
|
|
252
|
+
so a builder can re-run it after a DNS change without a special path.
|
|
253
|
+
|
|
254
|
+
**Input**
|
|
255
|
+
|
|
256
|
+
| Field | Type | Required | Description |
|
|
257
|
+
|---|---|---|---|
|
|
258
|
+
| `path.app_id` | `string` | yes | |
|
|
259
|
+
| `path.hostname` | `string` | yes | |
|
|
260
|
+
| `headers.X-Org-Id` | `string \| null` | no | |
|
|
261
|
+
|
|
262
|
+
**Returns** `ApiResponse_DomainResponse_`: the envelope `{ data: DomainResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
263
|
+
|
|
264
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
265
|
+
|
|
266
|
+
`DomainResponse` fields:
|
|
267
|
+
|
|
268
|
+
| Field | Type | Required | Description |
|
|
269
|
+
|---|---|---|---|
|
|
270
|
+
| `app_id` | `string` | yes | |
|
|
271
|
+
| `domain_id` | `string` | yes | |
|
|
272
|
+
| `hostname` | `string` | yes | The canonical, normalized form -- not necessarily what was submitted. |
|
|
273
|
+
| `status` | `string` | yes | |
|
|
274
|
+
| `created_at` | `string (date-time) \| null` | no | |
|
|
275
|
+
| `verified_at` | `string (date-time) \| null` | no | |
|
|
276
|
+
|
|
277
|
+
**Example**
|
|
278
|
+
|
|
279
|
+
```ts
|
|
280
|
+
const result = await g8.api.appDomains.verifyAppDomain({ path: { app_id: "id", hostname: "Example" } });
|
|
281
|
+
```
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/* Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Types for `g8.api.appLogs` (App Logs): 2 operations.
|
|
5
|
+
*
|
|
6
|
+
* For reading. In code, import from the package instead:
|
|
7
|
+
* import type { ApiInput, ApiOutput, G8Contract } from "@graph8/sdk";
|
|
8
|
+
* type In = ApiInput<"get_app_logs_apps__app_id__logs_get">;
|
|
9
|
+
*
|
|
10
|
+
* Reference with examples: appLogs.md
|
|
11
|
+
*/
|
|
12
|
+
/* eslint-disable */
|
|
13
|
+
|
|
14
|
+
/** `g8.api.appLogs.<member>` -> the operationId it calls. */
|
|
15
|
+
export interface AppLogsMembers {
|
|
16
|
+
getAppLogs: "get_app_logs_apps__app_id__logs_get";
|
|
17
|
+
getDeploymentLogs: "get_deployment_logs_apps__app_id__deployments__deployment_id__logs_get";
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Input and output of every `g8.api.appLogs` operation, keyed by operationId. */
|
|
21
|
+
export interface AppLogsOperations {
|
|
22
|
+
/**
|
|
23
|
+
* GET /apps/{app_id}/logs
|
|
24
|
+
* Get App Logs
|
|
25
|
+
* tier: read · scope: apps:read
|
|
26
|
+
*/
|
|
27
|
+
get_app_logs_apps__app_id__logs_get: {
|
|
28
|
+
input: {
|
|
29
|
+
path: {
|
|
30
|
+
app_id: string;
|
|
31
|
+
};
|
|
32
|
+
query?: {
|
|
33
|
+
/** Lines per replica, newest last. */
|
|
34
|
+
tail_lines?: number;
|
|
35
|
+
};
|
|
36
|
+
headers?: {
|
|
37
|
+
"X-Org-Id"?: string | null;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
output: ApiResponse_AppLogsResponse_;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* GET /apps/{app_id}/deployments/{deployment_id}/logs
|
|
44
|
+
* Get Deployment Logs
|
|
45
|
+
* tier: read · scope: apps:read
|
|
46
|
+
*/
|
|
47
|
+
get_deployment_logs_apps__app_id__deployments__deployment_id__logs_get: {
|
|
48
|
+
input: {
|
|
49
|
+
path: {
|
|
50
|
+
app_id: string;
|
|
51
|
+
deployment_id: string;
|
|
52
|
+
};
|
|
53
|
+
query?: {
|
|
54
|
+
/** Lines per build step, newest last. */
|
|
55
|
+
tail_lines?: number;
|
|
56
|
+
};
|
|
57
|
+
headers?: {
|
|
58
|
+
"X-Org-Id"?: string | null;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
output: ApiResponse_AppLogsResponse_;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// 4 schemas referenced above (the same as G8Contract.<Name>).
|
|
66
|
+
|
|
67
|
+
export interface ApiResponse_AppLogsResponse_ {
|
|
68
|
+
data: AppLogsResponse;
|
|
69
|
+
pagination?: PaginationMeta | null;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Logs for one app or one of its builds.
|
|
74
|
+
*
|
|
75
|
+
* ``redacted`` is always true and means only that graph8's credential patterns
|
|
76
|
+
* were applied. It is NOT a claim the output is safe to publish: these are a
|
|
77
|
+
* customer's own build and application logs, and an application can print a
|
|
78
|
+
* secret in a shape no pattern matches.
|
|
79
|
+
*/
|
|
80
|
+
export interface AppLogsResponse {
|
|
81
|
+
app_id: string;
|
|
82
|
+
containers?: Array<ContainerLogResponse>;
|
|
83
|
+
/** Set for build logs. `null` for the running app's logs. */
|
|
84
|
+
deployment_id?: string | null;
|
|
85
|
+
/** The app's own Kubernetes namespace. Derived from the app id, never supplied. */
|
|
86
|
+
namespace: string;
|
|
87
|
+
redacted?: boolean;
|
|
88
|
+
/** Lines requested per container, after clamping to the server maximum. */
|
|
89
|
+
tail_lines: number;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* One container's tail of output.
|
|
94
|
+
*
|
|
95
|
+
* A build is five steps in one pod (fetch, scan-source, build, scan-image,
|
|
96
|
+
* push), so a single flat blob would leave a caller unable to say which step
|
|
97
|
+
* failed. ``kind`` separates the four init steps from the one container, which
|
|
98
|
+
* is the ordering Kubernetes actually runs them in.
|
|
99
|
+
*/
|
|
100
|
+
export interface ContainerLogResponse {
|
|
101
|
+
container: string;
|
|
102
|
+
kind: "init" | "container";
|
|
103
|
+
pod: string;
|
|
104
|
+
text: string;
|
|
105
|
+
/** The tail hit the per-container byte cap. Earlier output exists and was not returned. */
|
|
106
|
+
truncated?: boolean;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export interface PaginationMeta {
|
|
110
|
+
/** Whether there are more pages */
|
|
111
|
+
has_next: boolean;
|
|
112
|
+
/** Items per page */
|
|
113
|
+
limit: number;
|
|
114
|
+
/** Opaque cursor for the next page; null when there are no more items. Pass it back as the `cursor` query param to fetch the following page without computing page numbers. */
|
|
115
|
+
next_cursor?: string | null;
|
|
116
|
+
/** Current page number (1-indexed) */
|
|
117
|
+
page: number;
|
|
118
|
+
/** Total number of items */
|
|
119
|
+
total: number;
|
|
120
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
<!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
|
|
2
|
+
|
|
3
|
+
# `g8.api.appLogs`: App Logs
|
|
4
|
+
|
|
5
|
+
2 operations (2 read).
|
|
6
|
+
|
|
7
|
+
2 of these also have a hand-written method (`g8.appPlatform`), marked **★** below. Prefer the hand-written method when one exists: it unwraps the `data` envelope and takes friendlier arguments. See [../sdk-clients.md](../sdk-clients.md).
|
|
8
|
+
|
|
9
|
+
Every example below assumes this setup (server-side, API key):
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { g8 } from "@graph8/sdk";
|
|
13
|
+
|
|
14
|
+
g8.init({ apiKey: process.env.G8_API_KEY! });
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Example values are placeholders that match each field's type. Only required fields are shown. Every example is type-checked against the SDK in CI.
|
|
18
|
+
|
|
19
|
+
Exact TypeScript types for every operation on this page, and every schema they use: [appLogs.d.ts](appLogs.d.ts).
|
|
20
|
+
|
|
21
|
+
## Operations
|
|
22
|
+
|
|
23
|
+
| Call | HTTP | Tier | Scope | Summary |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| [`getAppLogs`](#op-getapplogs) ★ | `GET /api/v1/apps/{app_id}/logs` | read | `apps:read` | Get App Logs |
|
|
26
|
+
| [`getDeploymentLogs`](#op-getdeploymentlogs) ★ | `GET /api/v1/apps/{app_id}/deployments/{deployment_id}/logs` | read | `apps:read` | Get Deployment Logs |
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
<a id="op-getapplogs"></a>
|
|
31
|
+
|
|
32
|
+
### `g8.api.appLogs.getAppLogs(input)`
|
|
33
|
+
|
|
34
|
+
**Get App Logs**
|
|
35
|
+
|
|
36
|
+
- HTTP: `GET /api/v1/apps/{app_id}/logs`
|
|
37
|
+
- operationId: `get_app_logs_apps__app_id__logs_get` (also callable as `g8.api.call("get_app_logs_apps__app_id__logs_get", input)`)
|
|
38
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
39
|
+
- API-key scope: `apps:read`
|
|
40
|
+
- ★ Hand-written: [`g8.appPlatform.logs()`](../sdk-clients.md#g8-appplatform-logs)
|
|
41
|
+
|
|
42
|
+
What the running app is printing.
|
|
43
|
+
|
|
44
|
+
The app's own pods only. The per-app egress proxy runs in the same namespace
|
|
45
|
+
and is deliberately excluded: it is platform infrastructure that happens to
|
|
46
|
+
live inside a tenant boundary, and its output is graph8's, not the builder's.
|
|
47
|
+
|
|
48
|
+
Empty until a deployment reaches `deployed`. The `app` Deployment ships with
|
|
49
|
+
`replicas: 0` and a pause image, so a namespace that exists still has no app
|
|
50
|
+
pod to read until a build has been promoted.
|
|
51
|
+
|
|
52
|
+
**Input**
|
|
53
|
+
|
|
54
|
+
| Field | Type | Required | Description |
|
|
55
|
+
|---|---|---|---|
|
|
56
|
+
| `path.app_id` | `string` | yes | |
|
|
57
|
+
| `query.tail_lines` | `integer` | no | Lines per replica, newest last. default `200` |
|
|
58
|
+
| `headers.X-Org-Id` | `string \| null` | no | |
|
|
59
|
+
|
|
60
|
+
**Returns** `ApiResponse_AppLogsResponse_`: the envelope `{ data: AppLogsResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
61
|
+
|
|
62
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
63
|
+
|
|
64
|
+
`AppLogsResponse` fields:
|
|
65
|
+
|
|
66
|
+
| Field | Type | Required | Description |
|
|
67
|
+
|---|---|---|---|
|
|
68
|
+
| `app_id` | `string` | yes | |
|
|
69
|
+
| `namespace` | `string` | yes | The app's own Kubernetes namespace. Derived from the app id, never supplied. |
|
|
70
|
+
| `tail_lines` | `integer` | yes | Lines requested per container, after clamping to the server maximum. |
|
|
71
|
+
| `containers` | `Array<ContainerLogResponse>` | no | |
|
|
72
|
+
| `deployment_id` | `string \| null` | no | Set for build logs. `null` for the running app's logs. |
|
|
73
|
+
| `redacted` | `boolean` | no | default `true` |
|
|
74
|
+
|
|
75
|
+
**Example**
|
|
76
|
+
|
|
77
|
+
```ts
|
|
78
|
+
const result = await g8.api.appLogs.getAppLogs({ path: { app_id: "id" } });
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
<a id="op-getdeploymentlogs"></a>
|
|
84
|
+
|
|
85
|
+
### `g8.api.appLogs.getDeploymentLogs(input)`
|
|
86
|
+
|
|
87
|
+
**Get Deployment Logs**
|
|
88
|
+
|
|
89
|
+
- HTTP: `GET /api/v1/apps/{app_id}/deployments/{deployment_id}/logs`
|
|
90
|
+
- operationId: `get_deployment_logs_apps__app_id__deployments__deployment_id__logs_get` (also callable as `g8.api.call("get_deployment_logs_apps__app_id__deployments__deployment_id__logs_get", input)`)
|
|
91
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
92
|
+
- API-key scope: `apps:read`
|
|
93
|
+
- ★ Hand-written: [`g8.appPlatform.deploymentLogs()`](../sdk-clients.md#g8-appplatform-deploymentlogs)
|
|
94
|
+
|
|
95
|
+
Why a build failed.
|
|
96
|
+
|
|
97
|
+
Returns every step of the build pod in the order Kubernetes runs them --
|
|
98
|
+
fetch, scan-source, build, scan-image, then push -- because "which step" is
|
|
99
|
+
most of the answer. A step that has not started is omitted rather than
|
|
100
|
+
returned empty, so a build in progress reports what exists so far.
|
|
101
|
+
|
|
102
|
+
An empty `containers` list means the build pod is gone or was never created.
|
|
103
|
+
Build pods are reaped an hour after they finish (`ttlSecondsAfterFinished`),
|
|
104
|
+
so logs for an older deployment are genuinely unavailable rather than hidden;
|
|
105
|
+
`last_error_sanitized` on the deployment is what survives.
|
|
106
|
+
|
|
107
|
+
`redacted` is always true and means graph8's credential patterns were applied.
|
|
108
|
+
It is NOT a claim the output is safe to publish: this is a customer's own
|
|
109
|
+
build output and it can print a secret in a shape no pattern matches.
|
|
110
|
+
|
|
111
|
+
**Input**
|
|
112
|
+
|
|
113
|
+
| Field | Type | Required | Description |
|
|
114
|
+
|---|---|---|---|
|
|
115
|
+
| `path.app_id` | `string` | yes | |
|
|
116
|
+
| `path.deployment_id` | `string` | yes | |
|
|
117
|
+
| `query.tail_lines` | `integer` | no | Lines per build step, newest last. default `200` |
|
|
118
|
+
| `headers.X-Org-Id` | `string \| null` | no | |
|
|
119
|
+
|
|
120
|
+
**Returns** `ApiResponse_AppLogsResponse_`: the envelope `{ data: AppLogsResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
121
|
+
|
|
122
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
123
|
+
|
|
124
|
+
`AppLogsResponse` fields:
|
|
125
|
+
|
|
126
|
+
| Field | Type | Required | Description |
|
|
127
|
+
|---|---|---|---|
|
|
128
|
+
| `app_id` | `string` | yes | |
|
|
129
|
+
| `namespace` | `string` | yes | The app's own Kubernetes namespace. Derived from the app id, never supplied. |
|
|
130
|
+
| `tail_lines` | `integer` | yes | Lines requested per container, after clamping to the server maximum. |
|
|
131
|
+
| `containers` | `Array<ContainerLogResponse>` | no | |
|
|
132
|
+
| `deployment_id` | `string \| null` | no | Set for build logs. `null` for the running app's logs. |
|
|
133
|
+
| `redacted` | `boolean` | no | default `true` |
|
|
134
|
+
|
|
135
|
+
**Example**
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
const result = await g8.api.appLogs.getDeploymentLogs({ path: { app_id: "id", deployment_id: "id" } });
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Referenced types
|
|
144
|
+
|
|
145
|
+
Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
|
|
146
|
+
|
|
147
|
+
<a id="type-containerlogresponse"></a>
|
|
148
|
+
|
|
149
|
+
### `ContainerLogResponse`
|
|
150
|
+
|
|
151
|
+
One container's tail of output. A build is five steps in one pod (fetch, scan-source, build, scan-image, push), so a single flat blob would leave a caller unable to say which step failed. ``kind`` separates the four init steps from the one container, which is the ordering Kubernetes actually runs them in.
|
|
152
|
+
|
|
153
|
+
| Field | Type | Required | Description |
|
|
154
|
+
|---|---|---|---|
|
|
155
|
+
| `container` | `string` | yes | |
|
|
156
|
+
| `kind` | `"init" \| "container"` | yes | |
|
|
157
|
+
| `pod` | `string` | yes | |
|
|
158
|
+
| `text` | `string` | yes | |
|
|
159
|
+
| `truncated` | `boolean` | no | The tail hit the per-container byte cap. Earlier output exists and was not returned. default `false` |
|