@graph8/sdk 0.251.0 → 0.260.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 +104 -7
- package/dist/index.d.ts +104 -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 +102 -7
- package/dist/react.d.ts +102 -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 +1696 -0
- package/docs/api/deals.md +2432 -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,175 @@
|
|
|
1
|
+
<!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
|
|
2
|
+
|
|
3
|
+
# `g8.api.recordRoles`: Record Roles
|
|
4
|
+
|
|
5
|
+
4 operations (2 read, 1 write, 1 destructive).
|
|
6
|
+
|
|
7
|
+
No hand-written client covers this area. Call it through `g8.api.recordRoles.*` as shown below, or by operationId with `g8.api.call(operationId, input)`.
|
|
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: [recordRoles.d.ts](recordRoles.d.ts).
|
|
20
|
+
|
|
21
|
+
## Operations
|
|
22
|
+
|
|
23
|
+
| Call | HTTP | Tier | Scope | Summary |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| [`assignRecordRole`](#op-assignrecordrole) | `POST /api/v1/records/{entity_type}/{entity_id}/role-assignments` | write | `contacts:write` | Assign Record Role |
|
|
26
|
+
| [`clearRecordRole`](#op-clearrecordrole) | `DELETE /api/v1/records/{entity_type}/{entity_id}/role-assignments/{role_slot}` | destructive | `contacts:delete` | Clear Record Role |
|
|
27
|
+
| [`getRecordRoleHistory`](#op-getrecordrolehistory) | `GET /api/v1/records/{entity_type}/{entity_id}/role-history` | read | `contacts:read` | Get Record Role History |
|
|
28
|
+
| [`getRecordRoleSlots`](#op-getrecordroleslots) | `GET /api/v1/records/{entity_type}/{entity_id}/role-slots` | read | `contacts:read` | Get Record Role Slots |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
<a id="op-assignrecordrole"></a>
|
|
33
|
+
|
|
34
|
+
### `g8.api.recordRoles.assignRecordRole(input)`
|
|
35
|
+
|
|
36
|
+
**Assign Record Role**
|
|
37
|
+
|
|
38
|
+
- HTTP: `POST /api/v1/records/{entity_type}/{entity_id}/role-assignments`
|
|
39
|
+
- operationId: `assign_record_role_records__entity_type___entity_id__role_assignments_post` (also callable as `g8.api.call("assign_record_role_records__entity_type___entity_id__role_assignments_post", input)`)
|
|
40
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
41
|
+
- API-key scope: `contacts:write`
|
|
42
|
+
|
|
43
|
+
Put a member in a role slot. Other slots are untouched; re-assigning the holder is a no-op.
|
|
44
|
+
|
|
45
|
+
**Input**
|
|
46
|
+
|
|
47
|
+
| Field | Type | Required | Description |
|
|
48
|
+
|---|---|---|---|
|
|
49
|
+
| `path.entity_type` | `"contact" \| "company" \| "deal"` | yes | `contact`, `company` or `deal`. |
|
|
50
|
+
| `path.entity_id` | `string` | yes | The record id. |
|
|
51
|
+
| `body` | `RecordRoleAssignRequest` | yes | Request body; fields below. |
|
|
52
|
+
|
|
53
|
+
Body fields (`RecordRoleAssignRequest`):
|
|
54
|
+
|
|
55
|
+
| Field | Type | Required | Description |
|
|
56
|
+
|---|---|---|---|
|
|
57
|
+
| `body.role_slot` | `"sdr" \| "ae" \| "csm"` | yes | |
|
|
58
|
+
| `body.user_id` | `string` | yes | The org member to put in the slot. |
|
|
59
|
+
| `body.reason` | `string \| null` | no | Why: manual_reassign \| rule_based \| account_owner_change \| import \| api. default `"manual_reassign"` |
|
|
60
|
+
|
|
61
|
+
**Returns** `ApiResponse_RecordRolePayload_`: the envelope `{ data: RecordRolePayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
62
|
+
|
|
63
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
64
|
+
|
|
65
|
+
**Example**
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
const result = await g8.api.recordRoles.assignRecordRole({
|
|
69
|
+
path: { entity_type: "contact", entity_id: "id" },
|
|
70
|
+
body: { role_slot: "sdr", user_id: "id" },
|
|
71
|
+
});
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
<a id="op-clearrecordrole"></a>
|
|
77
|
+
|
|
78
|
+
### `g8.api.recordRoles.clearRecordRole(input)`
|
|
79
|
+
|
|
80
|
+
**Clear Record Role**
|
|
81
|
+
|
|
82
|
+
- HTTP: `DELETE /api/v1/records/{entity_type}/{entity_id}/role-assignments/{role_slot}`
|
|
83
|
+
- operationId: `clear_record_role_records__entity_type___entity_id__role_assignments__role_slot__delete` (also callable as `g8.api.call("clear_record_role_records__entity_type___entity_id__role_assignments__role_slot__delete", input)`)
|
|
84
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
85
|
+
- API-key scope: `contacts:delete`
|
|
86
|
+
|
|
87
|
+
Clear a role slot. Recorded as an unassignment in the history.
|
|
88
|
+
|
|
89
|
+
**Input**
|
|
90
|
+
|
|
91
|
+
| Field | Type | Required | Description |
|
|
92
|
+
|---|---|---|---|
|
|
93
|
+
| `path.entity_type` | `"contact" \| "company" \| "deal"` | yes | `contact`, `company` or `deal`. |
|
|
94
|
+
| `path.entity_id` | `string` | yes | The record id. |
|
|
95
|
+
| `path.role_slot` | `"sdr" \| "ae" \| "csm"` | yes | The slot to clear. |
|
|
96
|
+
| `query.reason` | `string \| null` | no | Recorded on the history row. default `"manual_reassign"` |
|
|
97
|
+
|
|
98
|
+
**Returns** `ApiResponse_RecordRolePayload_`: the envelope `{ data: RecordRolePayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
99
|
+
|
|
100
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
101
|
+
|
|
102
|
+
**Example**
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
106
|
+
const result = await g8.api.recordRoles.clearRecordRole({
|
|
107
|
+
path: { entity_type: "contact", entity_id: "id", role_slot: "sdr" },
|
|
108
|
+
});
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
<a id="op-getrecordrolehistory"></a>
|
|
114
|
+
|
|
115
|
+
### `g8.api.recordRoles.getRecordRoleHistory(input)`
|
|
116
|
+
|
|
117
|
+
**Get Record Role History**
|
|
118
|
+
|
|
119
|
+
- HTTP: `GET /api/v1/records/{entity_type}/{entity_id}/role-history`
|
|
120
|
+
- operationId: `get_record_role_history_records__entity_type___entity_id__role_history_get` (also callable as `g8.api.call("get_record_role_history_records__entity_type___entity_id__role_history_get", input)`)
|
|
121
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
122
|
+
- API-key scope: `contacts:read`
|
|
123
|
+
|
|
124
|
+
Every assignment and unassignment on a record, in order.
|
|
125
|
+
|
|
126
|
+
**Input**
|
|
127
|
+
|
|
128
|
+
| Field | Type | Required | Description |
|
|
129
|
+
|---|---|---|---|
|
|
130
|
+
| `path.entity_type` | `"contact" \| "company" \| "deal"` | yes | `contact`, `company` or `deal`. |
|
|
131
|
+
| `path.entity_id` | `string` | yes | The record id. |
|
|
132
|
+
| `query.slot` | `"sdr" \| "ae" \| "csm" \| null` | no | Only this slot. |
|
|
133
|
+
| `query.limit` | `integer` | no | default `100` |
|
|
134
|
+
|
|
135
|
+
**Returns** `ApiResponse_RecordRolePayload_`: the envelope `{ data: RecordRolePayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
136
|
+
|
|
137
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
138
|
+
|
|
139
|
+
**Example**
|
|
140
|
+
|
|
141
|
+
```ts
|
|
142
|
+
const result = await g8.api.recordRoles.getRecordRoleHistory({ path: { entity_type: "contact", entity_id: "id" } });
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
<a id="op-getrecordroleslots"></a>
|
|
148
|
+
|
|
149
|
+
### `g8.api.recordRoles.getRecordRoleSlots(input)`
|
|
150
|
+
|
|
151
|
+
**Get Record Role Slots**
|
|
152
|
+
|
|
153
|
+
- HTTP: `GET /api/v1/records/{entity_type}/{entity_id}/role-slots`
|
|
154
|
+
- operationId: `get_record_role_slots_records__entity_type___entity_id__role_slots_get` (also callable as `g8.api.call("get_record_role_slots_records__entity_type___entity_id__role_slots_get", input)`)
|
|
155
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
156
|
+
- API-key scope: `contacts:read`
|
|
157
|
+
|
|
158
|
+
Who currently holds each role slot on a record.
|
|
159
|
+
|
|
160
|
+
**Input**
|
|
161
|
+
|
|
162
|
+
| Field | Type | Required | Description |
|
|
163
|
+
|---|---|---|---|
|
|
164
|
+
| `path.entity_type` | `"contact" \| "company" \| "deal"` | yes | `contact`, `company` or `deal`. |
|
|
165
|
+
| `path.entity_id` | `string` | yes | The record id. |
|
|
166
|
+
|
|
167
|
+
**Returns** `ApiResponse_RecordRolePayload_`: the envelope `{ data: RecordRolePayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
168
|
+
|
|
169
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
170
|
+
|
|
171
|
+
**Example**
|
|
172
|
+
|
|
173
|
+
```ts
|
|
174
|
+
const result = await g8.api.recordRoles.getRecordRoleSlots({ path: { entity_type: "contact", entity_id: "id" } });
|
|
175
|
+
```
|
|
@@ -0,0 +1,146 @@
|
|
|
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.repos` (Repos): 4 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<"connect_repo_repos_post">;
|
|
9
|
+
*
|
|
10
|
+
* Reference with examples: repos.md
|
|
11
|
+
*/
|
|
12
|
+
/* eslint-disable */
|
|
13
|
+
|
|
14
|
+
/** `g8.api.repos.<member>` -> the operationId it calls. */
|
|
15
|
+
export interface ReposMembers {
|
|
16
|
+
connectRepo: "connect_repo_repos_post";
|
|
17
|
+
deleteRepo: "delete_repo_repos__repo_id__delete";
|
|
18
|
+
getRepo: "get_repo_repos__repo_id__get";
|
|
19
|
+
listRepos: "list_repos_repos_get";
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Input and output of every `g8.api.repos` operation, keyed by operationId. */
|
|
23
|
+
export interface ReposOperations {
|
|
24
|
+
/**
|
|
25
|
+
* POST /repos
|
|
26
|
+
* Connect Repo
|
|
27
|
+
* tier: write · scope: campaigns:write
|
|
28
|
+
*/
|
|
29
|
+
connect_repo_repos_post: {
|
|
30
|
+
input: {
|
|
31
|
+
headers?: {
|
|
32
|
+
"X-Target-Org-Id"?: string | null;
|
|
33
|
+
};
|
|
34
|
+
body: ConnectRepoRequest;
|
|
35
|
+
};
|
|
36
|
+
output: ApiResponse_RepoResponse_;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* DELETE /repos/{repo_id}
|
|
40
|
+
* Delete Repo
|
|
41
|
+
* tier: destructive · scope: campaigns:delete
|
|
42
|
+
*/
|
|
43
|
+
delete_repo_repos__repo_id__delete: {
|
|
44
|
+
input: {
|
|
45
|
+
path: {
|
|
46
|
+
/** Repository ID */
|
|
47
|
+
repo_id: string;
|
|
48
|
+
};
|
|
49
|
+
headers?: {
|
|
50
|
+
"X-Target-Org-Id"?: string | null;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
output: ApiResponse_dict_;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* GET /repos/{repo_id}
|
|
57
|
+
* Get Repo
|
|
58
|
+
* tier: read · scope: campaigns:read
|
|
59
|
+
*/
|
|
60
|
+
get_repo_repos__repo_id__get: {
|
|
61
|
+
input: {
|
|
62
|
+
path: {
|
|
63
|
+
/** Repository ID */
|
|
64
|
+
repo_id: string;
|
|
65
|
+
};
|
|
66
|
+
headers?: {
|
|
67
|
+
"X-Target-Org-Id"?: string | null;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
output: ApiResponse_RepoResponse_;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* GET /repos
|
|
74
|
+
* List Repos
|
|
75
|
+
* tier: read · scope: campaigns:read
|
|
76
|
+
*/
|
|
77
|
+
list_repos_repos_get: {
|
|
78
|
+
input: {
|
|
79
|
+
query?: {
|
|
80
|
+
/** Page number (1-indexed) */
|
|
81
|
+
page?: number;
|
|
82
|
+
/** Items per page (max 200) */
|
|
83
|
+
limit?: number;
|
|
84
|
+
};
|
|
85
|
+
headers?: {
|
|
86
|
+
"X-Target-Org-Id"?: string | null;
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
output: ApiResponse_list_RepoResponse__;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// 6 schemas referenced above (the same as G8Contract.<Name>).
|
|
94
|
+
|
|
95
|
+
export interface ApiResponse_RepoResponse_ {
|
|
96
|
+
data: RepoResponse;
|
|
97
|
+
pagination?: PaginationMeta | null;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface ApiResponse_dict_ {
|
|
101
|
+
data: Record<string, unknown>;
|
|
102
|
+
pagination?: PaginationMeta | null;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export interface ApiResponse_list_RepoResponse__ {
|
|
106
|
+
data: Array<RepoResponse>;
|
|
107
|
+
pagination?: PaginationMeta | null;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export interface ConnectRepoRequest {
|
|
111
|
+
/** Default branch name */
|
|
112
|
+
default_branch?: string;
|
|
113
|
+
/** Repository provider: github, gitlab, local */
|
|
114
|
+
provider?: string;
|
|
115
|
+
/** Repository name (e.g., my-saas-app) */
|
|
116
|
+
repo_name: string;
|
|
117
|
+
/** Repository URL (e.g., https://github.com/org/repo) */
|
|
118
|
+
repo_url: string;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export interface PaginationMeta {
|
|
122
|
+
/** Whether there are more pages */
|
|
123
|
+
has_next: boolean;
|
|
124
|
+
/** Items per page */
|
|
125
|
+
limit: number;
|
|
126
|
+
/** 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. */
|
|
127
|
+
next_cursor?: string | null;
|
|
128
|
+
/** Current page number (1-indexed) */
|
|
129
|
+
page: number;
|
|
130
|
+
/** Total number of items */
|
|
131
|
+
total: number;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export interface RepoResponse {
|
|
135
|
+
created_at?: string | null;
|
|
136
|
+
default_branch: string;
|
|
137
|
+
id: string;
|
|
138
|
+
install_status: string;
|
|
139
|
+
project_id?: string | null;
|
|
140
|
+
provider: string;
|
|
141
|
+
repo_name: string;
|
|
142
|
+
repo_url: string;
|
|
143
|
+
scan_status: string;
|
|
144
|
+
updated_at?: string | null;
|
|
145
|
+
write_key?: string | null;
|
|
146
|
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
<!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
|
|
2
|
+
|
|
3
|
+
# `g8.api.repos`: Repos
|
|
4
|
+
|
|
5
|
+
4 operations (2 read, 1 write, 1 destructive).
|
|
6
|
+
|
|
7
|
+
No hand-written client covers this area. Call it through `g8.api.repos.*` as shown below, or by operationId with `g8.api.call(operationId, input)`.
|
|
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: [repos.d.ts](repos.d.ts).
|
|
20
|
+
|
|
21
|
+
## Operations
|
|
22
|
+
|
|
23
|
+
| Call | HTTP | Tier | Scope | Summary |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| [`connectRepo`](#op-connectrepo) | `POST /api/v1/repos` | write | `campaigns:write` | Connect Repo |
|
|
26
|
+
| [`deleteRepo`](#op-deleterepo) | `DELETE /api/v1/repos/{repo_id}` | destructive | `campaigns:delete` | Delete Repo |
|
|
27
|
+
| [`getRepo`](#op-getrepo) | `GET /api/v1/repos/{repo_id}` | read | `campaigns:read` | Get Repo |
|
|
28
|
+
| [`listRepos`](#op-listrepos) | `GET /api/v1/repos` | read | `campaigns:read` | List Repos |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
<a id="op-connectrepo"></a>
|
|
33
|
+
|
|
34
|
+
### `g8.api.repos.connectRepo(input)`
|
|
35
|
+
|
|
36
|
+
**Connect Repo**
|
|
37
|
+
|
|
38
|
+
- HTTP: `POST /api/v1/repos`
|
|
39
|
+
- operationId: `connect_repo_repos_post` (also callable as `g8.api.call("connect_repo_repos_post", input)`)
|
|
40
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
41
|
+
- API-key scope: `campaigns:write`
|
|
42
|
+
|
|
43
|
+
Connect a repository to the organization.
|
|
44
|
+
|
|
45
|
+
**Input**
|
|
46
|
+
|
|
47
|
+
| Field | Type | Required | Description |
|
|
48
|
+
|---|---|---|---|
|
|
49
|
+
| `body` | `ConnectRepoRequest` | yes | Request body; fields below. |
|
|
50
|
+
|
|
51
|
+
Body fields (`ConnectRepoRequest`):
|
|
52
|
+
|
|
53
|
+
| Field | Type | Required | Description |
|
|
54
|
+
|---|---|---|---|
|
|
55
|
+
| `body.repo_name` | `string` | yes | Repository name (e.g., my-saas-app) |
|
|
56
|
+
| `body.repo_url` | `string` | yes | Repository URL (e.g., https://github.com/org/repo) |
|
|
57
|
+
| `body.default_branch` | `string` | no | Default branch name default `"main"` |
|
|
58
|
+
| `body.provider` | `string` | no | Repository provider: github, gitlab, local default `"github"` |
|
|
59
|
+
|
|
60
|
+
**Returns** `ApiResponse_RepoResponse_`: the envelope `{ data: RepoResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
61
|
+
|
|
62
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
63
|
+
|
|
64
|
+
`RepoResponse` fields:
|
|
65
|
+
|
|
66
|
+
| Field | Type | Required | Description |
|
|
67
|
+
|---|---|---|---|
|
|
68
|
+
| `default_branch` | `string` | yes | |
|
|
69
|
+
| `id` | `string (uuid)` | yes | |
|
|
70
|
+
| `install_status` | `string` | yes | |
|
|
71
|
+
| `provider` | `string` | yes | |
|
|
72
|
+
| `repo_name` | `string` | yes | |
|
|
73
|
+
| `repo_url` | `string` | yes | |
|
|
74
|
+
| `scan_status` | `string` | yes | |
|
|
75
|
+
| `created_at` | `string (date-time) \| null` | no | |
|
|
76
|
+
| `project_id` | `string \| null` | no | |
|
|
77
|
+
| `updated_at` | `string (date-time) \| null` | no | |
|
|
78
|
+
| `write_key` | `string \| null` | no | |
|
|
79
|
+
|
|
80
|
+
**Example**
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
const result = await g8.api.repos.connectRepo({ body: { repo_name: "Example", repo_url: "https://example.com" } });
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
<a id="op-deleterepo"></a>
|
|
89
|
+
|
|
90
|
+
### `g8.api.repos.deleteRepo(input)`
|
|
91
|
+
|
|
92
|
+
**Delete Repo**
|
|
93
|
+
|
|
94
|
+
- HTTP: `DELETE /api/v1/repos/{repo_id}`
|
|
95
|
+
- operationId: `delete_repo_repos__repo_id__delete` (also callable as `g8.api.call("delete_repo_repos__repo_id__delete", input)`)
|
|
96
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
97
|
+
- API-key scope: `campaigns:delete`
|
|
98
|
+
|
|
99
|
+
Disconnect a repository from the organization.
|
|
100
|
+
|
|
101
|
+
**Input**
|
|
102
|
+
|
|
103
|
+
| Field | Type | Required | Description |
|
|
104
|
+
|---|---|---|---|
|
|
105
|
+
| `path.repo_id` | `string` | yes | Repository ID |
|
|
106
|
+
|
|
107
|
+
**Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
108
|
+
|
|
109
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
110
|
+
|
|
111
|
+
**Example**
|
|
112
|
+
|
|
113
|
+
```ts
|
|
114
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
115
|
+
const result = await g8.api.repos.deleteRepo({ path: { repo_id: "id" } });
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
<a id="op-getrepo"></a>
|
|
121
|
+
|
|
122
|
+
### `g8.api.repos.getRepo(input)`
|
|
123
|
+
|
|
124
|
+
**Get Repo**
|
|
125
|
+
|
|
126
|
+
- HTTP: `GET /api/v1/repos/{repo_id}`
|
|
127
|
+
- operationId: `get_repo_repos__repo_id__get` (also callable as `g8.api.call("get_repo_repos__repo_id__get", input)`)
|
|
128
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
129
|
+
- API-key scope: `campaigns:read`
|
|
130
|
+
|
|
131
|
+
Get details of a connected repository.
|
|
132
|
+
|
|
133
|
+
**Input**
|
|
134
|
+
|
|
135
|
+
| Field | Type | Required | Description |
|
|
136
|
+
|---|---|---|---|
|
|
137
|
+
| `path.repo_id` | `string` | yes | Repository ID |
|
|
138
|
+
|
|
139
|
+
**Returns** `ApiResponse_RepoResponse_`: the envelope `{ data: RepoResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
140
|
+
|
|
141
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
142
|
+
|
|
143
|
+
`RepoResponse` fields:
|
|
144
|
+
|
|
145
|
+
| Field | Type | Required | Description |
|
|
146
|
+
|---|---|---|---|
|
|
147
|
+
| `default_branch` | `string` | yes | |
|
|
148
|
+
| `id` | `string (uuid)` | yes | |
|
|
149
|
+
| `install_status` | `string` | yes | |
|
|
150
|
+
| `provider` | `string` | yes | |
|
|
151
|
+
| `repo_name` | `string` | yes | |
|
|
152
|
+
| `repo_url` | `string` | yes | |
|
|
153
|
+
| `scan_status` | `string` | yes | |
|
|
154
|
+
| `created_at` | `string (date-time) \| null` | no | |
|
|
155
|
+
| `project_id` | `string \| null` | no | |
|
|
156
|
+
| `updated_at` | `string (date-time) \| null` | no | |
|
|
157
|
+
| `write_key` | `string \| null` | no | |
|
|
158
|
+
|
|
159
|
+
**Example**
|
|
160
|
+
|
|
161
|
+
```ts
|
|
162
|
+
const result = await g8.api.repos.getRepo({ path: { repo_id: "id" } });
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
<a id="op-listrepos"></a>
|
|
168
|
+
|
|
169
|
+
### `g8.api.repos.listRepos(input?)`
|
|
170
|
+
|
|
171
|
+
**List Repos**
|
|
172
|
+
|
|
173
|
+
- HTTP: `GET /api/v1/repos`
|
|
174
|
+
- operationId: `list_repos_repos_get` (also callable as `g8.api.call("list_repos_repos_get", input)`)
|
|
175
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
176
|
+
- API-key scope: `campaigns:read`
|
|
177
|
+
|
|
178
|
+
List all connected repositories in the organization.
|
|
179
|
+
|
|
180
|
+
**Input**
|
|
181
|
+
|
|
182
|
+
| Field | Type | Required | Description |
|
|
183
|
+
|---|---|---|---|
|
|
184
|
+
| `query.page` | `integer` | no | Page number (1-indexed) default `1` |
|
|
185
|
+
| `query.limit` | `integer` | no | Items per page (max 200) default `50` |
|
|
186
|
+
|
|
187
|
+
**Returns** `ApiResponse_list_RepoResponse__`: the envelope `{ data: Array<RepoResponse>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
188
|
+
|
|
189
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
190
|
+
|
|
191
|
+
`RepoResponse` fields:
|
|
192
|
+
|
|
193
|
+
| Field | Type | Required | Description |
|
|
194
|
+
|---|---|---|---|
|
|
195
|
+
| `default_branch` | `string` | yes | |
|
|
196
|
+
| `id` | `string (uuid)` | yes | |
|
|
197
|
+
| `install_status` | `string` | yes | |
|
|
198
|
+
| `provider` | `string` | yes | |
|
|
199
|
+
| `repo_name` | `string` | yes | |
|
|
200
|
+
| `repo_url` | `string` | yes | |
|
|
201
|
+
| `scan_status` | `string` | yes | |
|
|
202
|
+
| `created_at` | `string (date-time) \| null` | no | |
|
|
203
|
+
| `project_id` | `string \| null` | no | |
|
|
204
|
+
| `updated_at` | `string (date-time) \| null` | no | |
|
|
205
|
+
| `write_key` | `string \| null` | no | |
|
|
206
|
+
|
|
207
|
+
**Example**
|
|
208
|
+
|
|
209
|
+
```ts
|
|
210
|
+
const result = await g8.api.repos.listRepos();
|
|
211
|
+
```
|