api.tsx 24 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066
  1. import { baseApi } from "./baseApi";
  2. import { StorageType } from "./types";
  3. /**
  4. * Generic api call format
  5. * @param {string} token - Bearer token.
  6. * @param {Object} params - Body params.
  7. * @param {Object} pathParams - Path params.
  8. * @param {(err: Object, res: Object) => void} callback - Callback function.
  9. */
  10. const checkAuth = baseApi("GET", "/api/auth/check");
  11. const connectECRRegistry = baseApi<
  12. {
  13. name: string;
  14. aws_integration_id: string;
  15. },
  16. { id: number }
  17. >("POST", (pathParams) => {
  18. return `/api/projects/${pathParams.id}/registries`;
  19. });
  20. const connectGCRRegistry = baseApi<
  21. {
  22. name: string;
  23. gcp_integration_id: string;
  24. url: string;
  25. },
  26. { id: number }
  27. >("POST", (pathParams) => {
  28. return `/api/projects/${pathParams.id}/registries`;
  29. });
  30. const createAWSIntegration = baseApi<
  31. {
  32. aws_region: string;
  33. aws_cluster_id?: string;
  34. aws_access_key_id: string;
  35. aws_secret_access_key: string;
  36. },
  37. { id: number }
  38. >("POST", (pathParams) => {
  39. return `/api/projects/${pathParams.id}/integrations/aws`;
  40. });
  41. const overwriteAWSIntegration = baseApi<
  42. {
  43. aws_access_key_id: string;
  44. aws_secret_access_key: string;
  45. },
  46. {
  47. projectID: number;
  48. awsIntegrationID: number;
  49. cluster_id: number;
  50. }
  51. >("POST", (pathParams) => {
  52. return `/api/projects/${pathParams.projectID}/integrations/aws/${pathParams.awsIntegrationID}/overwrite?cluster_id=${pathParams.cluster_id}`;
  53. });
  54. const createDOCR = baseApi<
  55. {
  56. do_integration_id: number;
  57. docr_name: string;
  58. docr_subscription_tier: string;
  59. },
  60. {
  61. project_id: number;
  62. }
  63. >("POST", (pathParams) => {
  64. return `/api/projects/${pathParams.project_id}/provision/docr`;
  65. });
  66. const createDOKS = baseApi<
  67. {
  68. do_integration_id: number;
  69. doks_name: string;
  70. do_region: string;
  71. },
  72. {
  73. project_id: number;
  74. }
  75. >("POST", (pathParams) => {
  76. return `/api/projects/${pathParams.project_id}/provision/doks`;
  77. });
  78. const createEmailVerification = baseApi<{}, {}>("POST", (pathParams) => {
  79. return `/api/email/verify/initiate`;
  80. });
  81. const createGCPIntegration = baseApi<
  82. {
  83. gcp_region: string;
  84. gcp_key_data: string;
  85. gcp_project_id: string;
  86. },
  87. {
  88. project_id: number;
  89. }
  90. >("POST", (pathParams) => {
  91. return `/api/projects/${pathParams.project_id}/integrations/gcp`;
  92. });
  93. const createGCR = baseApi<
  94. {
  95. gcp_integration_id: number;
  96. },
  97. {
  98. project_id: number;
  99. }
  100. >("POST", (pathParams) => {
  101. return `/api/projects/${pathParams.project_id}/provision/gcr`;
  102. });
  103. const createGHAction = baseApi<
  104. {
  105. git_repo: string;
  106. git_branch: string;
  107. registry_id: number;
  108. image_repo_uri: string;
  109. dockerfile_path: string;
  110. folder_path: string;
  111. git_repo_id: number;
  112. env: any;
  113. },
  114. {
  115. project_id: number;
  116. CLUSTER_ID: number;
  117. RELEASE_NAME: string;
  118. RELEASE_NAMESPACE: string;
  119. }
  120. >("POST", (pathParams) => {
  121. let { project_id, CLUSTER_ID, RELEASE_NAME, RELEASE_NAMESPACE } = pathParams;
  122. return `/api/projects/${project_id}/ci/actions?cluster_id=${CLUSTER_ID}&name=${RELEASE_NAME}&namespace=${RELEASE_NAMESPACE}`;
  123. });
  124. const createGKE = baseApi<
  125. {
  126. gcp_integration_id: number;
  127. gke_name: string;
  128. },
  129. {
  130. project_id: number;
  131. }
  132. >("POST", (pathParams) => {
  133. return `/api/projects/${pathParams.project_id}/provision/gke`;
  134. });
  135. const createInvite = baseApi<
  136. {
  137. email: string;
  138. kind: string;
  139. },
  140. {
  141. id: number;
  142. }
  143. >("POST", (pathParams) => {
  144. return `/api/projects/${pathParams.id}/invites`;
  145. });
  146. const createPasswordReset = baseApi<
  147. {
  148. email: string;
  149. },
  150. {}
  151. >("POST", (pathParams) => {
  152. return `/api/password/reset/initiate`;
  153. });
  154. const createPasswordResetVerify = baseApi<
  155. {
  156. email: string;
  157. token: string;
  158. token_id: number;
  159. },
  160. {}
  161. >("POST", (pathParams) => {
  162. return `/api/password/reset/verify`;
  163. });
  164. const createPasswordResetFinalize = baseApi<
  165. {
  166. email: string;
  167. token: string;
  168. token_id: number;
  169. new_password: string;
  170. },
  171. {}
  172. >("POST", (pathParams) => {
  173. return `/api/password/reset/finalize`;
  174. });
  175. const createProject = baseApi<{ name: string }, {}>("POST", (pathParams) => {
  176. return `/api/projects`;
  177. });
  178. const createSubdomain = baseApi<
  179. {
  180. release_name: string;
  181. },
  182. {
  183. id: number;
  184. cluster_id: number;
  185. }
  186. >("POST", (pathParams) => {
  187. let { cluster_id, id } = pathParams;
  188. return `/api/projects/${id}/k8s/subdomain?cluster_id=${cluster_id}`;
  189. });
  190. const deleteCluster = baseApi<
  191. {},
  192. {
  193. project_id: number;
  194. cluster_id: number;
  195. }
  196. >("DELETE", (pathParams) => {
  197. return `/api/projects/${pathParams.project_id}/clusters/${pathParams.cluster_id}`;
  198. });
  199. const deleteInvite = baseApi<{}, { id: number; invId: number }>(
  200. "DELETE",
  201. (pathParams) => {
  202. return `/api/projects/${pathParams.id}/invites/${pathParams.invId}`;
  203. }
  204. );
  205. const deletePod = baseApi<
  206. {
  207. cluster_id: number;
  208. },
  209. { name: string; namespace: string; id: number }
  210. >("DELETE", (pathParams) => {
  211. return `/api/projects/${pathParams.id}/k8s/pods/${pathParams.namespace}/${pathParams.name}`;
  212. });
  213. const getPodEvents = baseApi<
  214. {
  215. cluster_id: number;
  216. },
  217. { name: string; namespace: string; id: number }
  218. >("GET", (pathParams) => {
  219. return `/api/projects/${pathParams.id}/k8s/pods/${pathParams.namespace}/${pathParams.name}/events/list`;
  220. });
  221. const deleteProject = baseApi<{}, { id: number }>("DELETE", (pathParams) => {
  222. return `/api/projects/${pathParams.id}`;
  223. });
  224. const deleteRegistryIntegration = baseApi<
  225. {},
  226. {
  227. project_id: number;
  228. registry_id: number;
  229. }
  230. >("DELETE", (pathParams) => {
  231. return `/api/projects/${pathParams.project_id}/registries/${pathParams.registry_id}`;
  232. });
  233. const deployTemplate = baseApi<
  234. {
  235. templateName: string;
  236. imageURL?: string;
  237. formValues?: any;
  238. storage: StorageType;
  239. namespace: string;
  240. name: string;
  241. },
  242. {
  243. id: number;
  244. cluster_id: number;
  245. name: string;
  246. version: string;
  247. repo_url?: string;
  248. }
  249. >("POST", (pathParams) => {
  250. let { cluster_id, id, name, version, repo_url } = pathParams;
  251. if (repo_url) {
  252. return `/api/projects/${id}/deploy/${name}/${version}?cluster_id=${cluster_id}&repo_url=${repo_url}`;
  253. }
  254. return `/api/projects/${id}/deploy/${name}/${version}?cluster_id=${cluster_id}`;
  255. });
  256. const deployAddon = baseApi<
  257. {
  258. templateName: string;
  259. formValues?: any;
  260. storage: StorageType;
  261. namespace: string;
  262. name: string;
  263. },
  264. {
  265. id: number;
  266. cluster_id: number;
  267. name: string;
  268. version: string;
  269. repo_url?: string;
  270. }
  271. >("POST", (pathParams) => {
  272. let { cluster_id, id, name, version, repo_url } = pathParams;
  273. return `/api/projects/${id}/deploy/addon/${name}/${version}?cluster_id=${cluster_id}&repo_url=${repo_url}`;
  274. });
  275. const destroyCluster = baseApi<
  276. {
  277. eks_name: string;
  278. },
  279. {
  280. project_id: number;
  281. infra_id: number;
  282. }
  283. >("POST", (pathParams) => {
  284. return `/api/projects/${pathParams.project_id}/infra/${pathParams.infra_id}/eks/destroy`;
  285. });
  286. const detectBuildpack = baseApi<
  287. {},
  288. {
  289. project_id: number;
  290. git_repo_id: number;
  291. kind: string;
  292. owner: string;
  293. name: string;
  294. branch: string;
  295. }
  296. >("GET", (pathParams) => {
  297. return `/api/projects/${pathParams.project_id}/gitrepos/${pathParams.git_repo_id}/repos/${pathParams.kind}/${pathParams.owner}/${pathParams.name}/${pathParams.branch}/buildpack/detect`;
  298. });
  299. const getBranchContents = baseApi<
  300. {
  301. dir: string;
  302. },
  303. {
  304. project_id: number;
  305. git_repo_id: number;
  306. kind: string;
  307. owner: string;
  308. name: string;
  309. branch: string;
  310. }
  311. >("GET", (pathParams) => {
  312. return `/api/projects/${pathParams.project_id}/gitrepos/${pathParams.git_repo_id}/repos/${pathParams.kind}/${pathParams.owner}/${pathParams.name}/${pathParams.branch}/contents`;
  313. });
  314. const getProcfileContents = baseApi<
  315. {
  316. path: string;
  317. },
  318. {
  319. project_id: number;
  320. git_repo_id: number;
  321. kind: string;
  322. owner: string;
  323. name: string;
  324. branch: string;
  325. }
  326. >("GET", (pathParams) => {
  327. return `/api/projects/${pathParams.project_id}/gitrepos/${pathParams.git_repo_id}/repos/${pathParams.kind}/${pathParams.owner}/${pathParams.name}/${pathParams.branch}/procfile`;
  328. });
  329. const getBranches = baseApi<
  330. {},
  331. {
  332. project_id: number;
  333. git_repo_id: number;
  334. kind: string;
  335. owner: string;
  336. name: string;
  337. }
  338. >("GET", (pathParams) => {
  339. return `/api/projects/${pathParams.project_id}/gitrepos/${pathParams.git_repo_id}/repos/${pathParams.kind}/${pathParams.owner}/${pathParams.name}/branches`;
  340. });
  341. const getChart = baseApi<
  342. {
  343. namespace: string;
  344. cluster_id: number;
  345. storage: StorageType;
  346. },
  347. { id: number; name: string; revision: number }
  348. >("GET", (pathParams) => {
  349. return `/api/projects/${pathParams.id}/releases/${pathParams.name}/${pathParams.revision}`;
  350. });
  351. const getCharts = baseApi<
  352. {
  353. namespace: string;
  354. cluster_id: number;
  355. storage: StorageType;
  356. limit: number;
  357. skip: number;
  358. byDate: boolean;
  359. statusFilter: string[];
  360. },
  361. { id: number }
  362. >("GET", (pathParams) => {
  363. return `/api/projects/${pathParams.id}/releases`;
  364. });
  365. const getChartComponents = baseApi<
  366. {
  367. namespace: string;
  368. cluster_id: number;
  369. storage: StorageType;
  370. },
  371. { id: number; name: string; revision: number }
  372. >("GET", (pathParams) => {
  373. return `/api/projects/${pathParams.id}/releases/${pathParams.name}/${pathParams.revision}/components`;
  374. });
  375. const getChartControllers = baseApi<
  376. {
  377. namespace: string;
  378. cluster_id: number;
  379. storage: StorageType;
  380. },
  381. { id: number; name: string; revision: number }
  382. >("GET", (pathParams) => {
  383. return `/api/projects/${pathParams.id}/releases/${pathParams.name}/${pathParams.revision}/controllers`;
  384. });
  385. const getClusterIntegrations = baseApi("GET", "/api/integrations/cluster");
  386. const getClusters = baseApi<{}, { id: number }>("GET", (pathParams) => {
  387. return `/api/projects/${pathParams.id}/clusters`;
  388. });
  389. const getCluster = baseApi<
  390. {},
  391. {
  392. project_id: number;
  393. cluster_id: number;
  394. }
  395. >("GET", (pathParams) => {
  396. return `/api/projects/${pathParams.project_id}/clusters/${pathParams.cluster_id}`;
  397. });
  398. const getClusterNodes = baseApi<
  399. {},
  400. {
  401. project_id: number;
  402. cluster_id: number;
  403. }
  404. >("GET", (pathParams) => {
  405. return `/api/projects/${pathParams.project_id}/clusters/${pathParams.cluster_id}/nodes`;
  406. });
  407. const getClusterNode = baseApi<
  408. {},
  409. {
  410. project_id: number;
  411. cluster_id: number;
  412. nodeName: string;
  413. }
  414. >(
  415. "GET",
  416. (pathParams) =>
  417. `/api/projects/${pathParams.project_id}/clusters/${pathParams.cluster_id}/node/${pathParams.nodeName}`
  418. );
  419. const getGitRepoList = baseApi<
  420. {},
  421. {
  422. project_id: number;
  423. git_repo_id: number;
  424. }
  425. >("GET", (pathParams) => {
  426. return `/api/projects/${pathParams.project_id}/gitrepos/${pathParams.git_repo_id}/repos`;
  427. });
  428. const getGitRepos = baseApi<
  429. {},
  430. {
  431. project_id: number;
  432. }
  433. >("GET", (pathParams) => {
  434. return `/api/projects/${pathParams.project_id}/gitrepos`;
  435. });
  436. const getImageRepos = baseApi<
  437. {},
  438. {
  439. project_id: number;
  440. registry_id: number;
  441. }
  442. >("GET", (pathParams) => {
  443. return `/api/projects/${pathParams.project_id}/registries/${pathParams.registry_id}/repositories`;
  444. });
  445. const getImageTags = baseApi<
  446. {},
  447. {
  448. project_id: number;
  449. registry_id: number;
  450. repo_name: string;
  451. }
  452. >("GET", (pathParams) => {
  453. return `/api/projects/${pathParams.project_id}/registries/${pathParams.registry_id}/repositories/${pathParams.repo_name}`;
  454. });
  455. const getInfra = baseApi<
  456. {},
  457. {
  458. project_id: number;
  459. }
  460. >("GET", (pathParams) => {
  461. return `/api/projects/${pathParams.project_id}/infra`;
  462. });
  463. const getIngress = baseApi<
  464. {
  465. cluster_id: number;
  466. },
  467. { name: string; namespace: string; id: number }
  468. >("GET", (pathParams) => {
  469. return `/api/projects/${pathParams.id}/k8s/${pathParams.namespace}/ingress/${pathParams.name}`;
  470. });
  471. const getInvites = baseApi<{}, { id: number }>("GET", (pathParams) => {
  472. return `/api/projects/${pathParams.id}/invites`;
  473. });
  474. const getJobs = baseApi<
  475. {
  476. cluster_id: number;
  477. },
  478. { chart: string; namespace: string; release_name: string; id: number }
  479. >("GET", (pathParams) => {
  480. return `/api/projects/${pathParams.id}/k8s/${pathParams.namespace}/${pathParams.chart}/${pathParams.release_name}/jobs`;
  481. });
  482. const getJobPods = baseApi<
  483. {
  484. cluster_id: number;
  485. },
  486. { name: string; namespace: string; id: number }
  487. >("GET", (pathParams) => {
  488. return `/api/projects/${pathParams.id}/k8s/jobs/${pathParams.namespace}/${pathParams.name}/pods`;
  489. });
  490. const getMatchingPods = baseApi<
  491. {
  492. cluster_id: number;
  493. namespace: string;
  494. selectors: string[];
  495. },
  496. { id: number }
  497. >("GET", (pathParams) => {
  498. return `/api/projects/${pathParams.id}/k8s/pods`;
  499. });
  500. const getMetrics = baseApi<
  501. {
  502. cluster_id: number;
  503. metric: string;
  504. shouldsum: boolean;
  505. pods: string[];
  506. namespace: string;
  507. startrange: number;
  508. endrange: number;
  509. resolution: string;
  510. },
  511. { id: number }
  512. >("GET", (pathParams) => {
  513. return `/api/projects/${pathParams.id}/k8s/metrics`;
  514. });
  515. const getNamespaces = baseApi<
  516. {
  517. cluster_id: number;
  518. },
  519. { id: number }
  520. >("GET", (pathParams) => {
  521. return `/api/projects/${pathParams.id}/k8s/namespaces`;
  522. });
  523. const getNGINXIngresses = baseApi<
  524. {
  525. cluster_id: number;
  526. },
  527. { id: number }
  528. >("GET", (pathParams) => {
  529. return `/api/projects/${pathParams.id}/k8s/prometheus/ingresses`;
  530. });
  531. const getOAuthIds = baseApi<
  532. {},
  533. {
  534. project_id: number;
  535. }
  536. >("GET", (pathParams) => {
  537. return `/api/projects/${pathParams.project_id}/integrations/oauth`;
  538. });
  539. const getProjectClusters = baseApi<{}, { id: number }>("GET", (pathParams) => {
  540. return `/api/projects/${pathParams.id}/clusters`;
  541. });
  542. const getProjectRegistries = baseApi<{}, { id: number }>(
  543. "GET",
  544. (pathParams) => {
  545. return `/api/projects/${pathParams.id}/registries`;
  546. }
  547. );
  548. const getProjectRepos = baseApi<{}, { id: number }>("GET", (pathParams) => {
  549. return `/api/projects/${pathParams.id}/repos`;
  550. });
  551. const getProjects = baseApi<{}, { id: number }>("GET", (pathParams) => {
  552. return `/api/users/${pathParams.id}/projects`;
  553. });
  554. const getPrometheusIsInstalled = baseApi<
  555. {
  556. cluster_id: number;
  557. },
  558. { id: number }
  559. >("GET", (pathParams) => {
  560. return `/api/projects/${pathParams.id}/k8s/prometheus/detect`;
  561. });
  562. const getRegistryIntegrations = baseApi("GET", "/api/integrations/registry");
  563. const getReleaseToken = baseApi<
  564. {
  565. namespace: string;
  566. cluster_id: number;
  567. storage: StorageType;
  568. },
  569. { name: string; id: number }
  570. >("GET", (pathParams) => {
  571. return `/api/projects/${pathParams.id}/releases/${pathParams.name}/webhook_token`;
  572. });
  573. const destroyEKS = baseApi<
  574. {
  575. eks_name: string;
  576. },
  577. {
  578. project_id: number;
  579. infra_id: number;
  580. }
  581. >("POST", (pathParams) => {
  582. return `/api/projects/${pathParams.project_id}/infra/${pathParams.infra_id}/eks/destroy`;
  583. });
  584. const destroyGKE = baseApi<
  585. {
  586. gke_name: string;
  587. },
  588. {
  589. project_id: number;
  590. infra_id: number;
  591. }
  592. >("POST", (pathParams) => {
  593. return `/api/projects/${pathParams.project_id}/infra/${pathParams.infra_id}/gke/destroy`;
  594. });
  595. const destroyDOKS = baseApi<
  596. {
  597. doks_name: string;
  598. },
  599. {
  600. project_id: number;
  601. infra_id: number;
  602. }
  603. >("POST", (pathParams) => {
  604. return `/api/projects/${pathParams.project_id}/infra/${pathParams.infra_id}/doks/destroy`;
  605. });
  606. const getRepoIntegrations = baseApi("GET", "/api/integrations/repo");
  607. const getRepos = baseApi<{}, { id: number }>("GET", (pathParams) => {
  608. return `/api/projects/${pathParams.id}/repos`;
  609. });
  610. const getRevisions = baseApi<
  611. {
  612. namespace: string;
  613. cluster_id: number;
  614. storage: StorageType;
  615. },
  616. { id: number; name: string }
  617. >("GET", (pathParams) => {
  618. return `/api/projects/${pathParams.id}/releases/${pathParams.name}/history`;
  619. });
  620. const getTemplateInfo = baseApi<
  621. {
  622. repo_url?: string;
  623. },
  624. { name: string; version: string }
  625. >("GET", (pathParams) => {
  626. return `/api/templates/${pathParams.name}/${pathParams.version}`;
  627. });
  628. const getTemplates = baseApi<
  629. {
  630. repo_url?: string;
  631. },
  632. {}
  633. >("GET", "/api/templates");
  634. const getUser = baseApi<{}, { id: number }>("GET", (pathParams) => {
  635. return `/api/users/${pathParams.id}`;
  636. });
  637. const getCapabilities = baseApi<{}, {}>("GET", () => {
  638. return `/api/capabilities`;
  639. });
  640. const linkGithubProject = baseApi<
  641. {},
  642. {
  643. project_id: number;
  644. }
  645. >("GET", (pathParams) => {
  646. return `/api/oauth/projects/${pathParams.project_id}/github`;
  647. });
  648. const getGithubAccess = baseApi<{}, {}>("GET", () => {
  649. return `/api/integrations/github-app/access`;
  650. });
  651. const logInUser = baseApi<{
  652. email: string;
  653. password: string;
  654. }>("POST", "/api/login");
  655. const logOutUser = baseApi("POST", "/api/logout");
  656. const provisionECR = baseApi<
  657. {
  658. ecr_name: string;
  659. aws_integration_id: string;
  660. },
  661. { id: number }
  662. >("POST", (pathParams) => {
  663. return `/api/projects/${pathParams.id}/provision/ecr`;
  664. });
  665. const provisionEKS = baseApi<
  666. {
  667. eks_name: string;
  668. aws_integration_id: string;
  669. machine_type: string;
  670. },
  671. { id: number }
  672. >("POST", (pathParams) => {
  673. return `/api/projects/${pathParams.id}/provision/eks`;
  674. });
  675. const registerUser = baseApi<{
  676. email: string;
  677. password: string;
  678. }>("POST", "/api/users");
  679. const rollbackChart = baseApi<
  680. {
  681. namespace: string;
  682. storage: StorageType;
  683. revision: number;
  684. },
  685. {
  686. id: number;
  687. name: string;
  688. cluster_id: number;
  689. }
  690. >("POST", (pathParams) => {
  691. let { id, name, cluster_id } = pathParams;
  692. return `/api/projects/${id}/releases/${name}/rollback?cluster_id=${cluster_id}`;
  693. });
  694. const uninstallTemplate = baseApi<
  695. {},
  696. {
  697. id: number;
  698. name: string;
  699. cluster_id: number;
  700. namespace: string;
  701. storage: StorageType;
  702. }
  703. >("POST", (pathParams) => {
  704. let { id, name, cluster_id, storage, namespace } = pathParams;
  705. return `/api/projects/${id}/delete/${name}?cluster_id=${cluster_id}&namespace=${namespace}&storage=${storage}`;
  706. });
  707. const updateUser = baseApi<
  708. {
  709. rawKubeConfig?: string;
  710. allowedContexts?: string[];
  711. },
  712. { id: number }
  713. >("PUT", (pathParams) => {
  714. return `/api/users/${pathParams.id}`;
  715. });
  716. const upgradeChartValues = baseApi<
  717. {
  718. namespace: string;
  719. storage: StorageType;
  720. values: string;
  721. version?: string;
  722. },
  723. {
  724. id: number;
  725. name: string;
  726. cluster_id: number;
  727. }
  728. >("POST", (pathParams) => {
  729. let { id, name, cluster_id } = pathParams;
  730. return `/api/projects/${id}/releases/${name}/upgrade?cluster_id=${cluster_id}`;
  731. });
  732. const listConfigMaps = baseApi<
  733. {
  734. namespace: string;
  735. cluster_id: number;
  736. },
  737. { id: number }
  738. >("GET", (pathParams) => {
  739. return `/api/projects/${pathParams.id}/k8s/configmap/list`;
  740. });
  741. const getConfigMap = baseApi<
  742. {
  743. name: string;
  744. namespace: string;
  745. cluster_id: number;
  746. },
  747. { id: number }
  748. >("GET", (pathParams) => {
  749. return `/api/projects/${pathParams.id}/k8s/configmap`;
  750. });
  751. const createConfigMap = baseApi<
  752. {
  753. name: string;
  754. namespace: string;
  755. variables: Record<string, string>;
  756. secret_variables?: Record<string, string>;
  757. },
  758. { id: number; cluster_id: number }
  759. >("POST", (pathParams) => {
  760. let { id, cluster_id } = pathParams;
  761. return `/api/projects/${id}/k8s/configmap/create?cluster_id=${cluster_id}`;
  762. });
  763. const updateConfigMap = baseApi<
  764. {
  765. name: string;
  766. namespace: string;
  767. variables: Record<string, string>;
  768. secret_variables?: Record<string, string>;
  769. },
  770. { id: number; cluster_id: number }
  771. >("POST", (pathParams) => {
  772. let { id, cluster_id } = pathParams;
  773. return `/api/projects/${id}/k8s/configmap/update?cluster_id=${cluster_id}`;
  774. });
  775. const deleteConfigMap = baseApi<
  776. {
  777. name: string;
  778. namespace: string;
  779. cluster_id: number;
  780. },
  781. { id: number }
  782. >("DELETE", (pathParams) => {
  783. return `/api/projects/${pathParams.id}/k8s/configmap/delete`;
  784. });
  785. const createNamespace = baseApi<
  786. {
  787. name: string;
  788. },
  789. { id: number; cluster_id: number }
  790. >("POST", (pathParams) => {
  791. let { id, cluster_id } = pathParams;
  792. return `/api/projects/${id}/k8s/namespaces/create?cluster_id=${cluster_id}`;
  793. });
  794. const deleteNamespace = baseApi<
  795. {
  796. name: string;
  797. cluster_id: number;
  798. },
  799. { id: number }
  800. >("DELETE", (pathParams) => {
  801. let { id } = pathParams;
  802. return `/api/projects/${id}/k8s/namespaces/delete`;
  803. });
  804. const deleteJob = baseApi<
  805. { cluster_id: number },
  806. { name: string; namespace: string; id: number }
  807. >("DELETE", (pathParams) => {
  808. let { id, name, namespace } = pathParams;
  809. return `/api/projects/${id}/k8s/jobs/${namespace}/${name}`;
  810. });
  811. const stopJob = baseApi<
  812. {},
  813. { name: string; namespace: string; id: number; cluster_id: number }
  814. >("POST", (pathParams) => {
  815. let { id, name, namespace, cluster_id } = pathParams;
  816. return `/api/projects/${id}/k8s/jobs/${namespace}/${name}/stop?cluster_id=${cluster_id}`;
  817. });
  818. const getAvailableRoles = baseApi<{}, { project_id: number }>(
  819. "GET",
  820. ({ project_id }) => `/api/projects/${project_id}/roles`
  821. );
  822. const updateInvite = baseApi<
  823. { kind: string },
  824. { project_id: number; invite_id: number }
  825. >(
  826. "POST",
  827. ({ project_id, invite_id }) =>
  828. `/api/projects/${project_id}/invites/${invite_id}`
  829. );
  830. const getCollaborators = baseApi<{}, { project_id: number }>(
  831. "GET",
  832. ({ project_id }) => `/api/projects/${project_id}/collaborators`
  833. );
  834. const updateCollaborator = baseApi<
  835. { kind: string },
  836. { project_id: number; user_id: number }
  837. >(
  838. "POST",
  839. ({ project_id, user_id }) => `/api/projects/${project_id}/roles/${user_id}`
  840. );
  841. const removeCollaborator = baseApi<{}, { project_id: number; user_id: number }>(
  842. "DELETE",
  843. ({ project_id, user_id }) => `/api/projects/${project_id}/roles/${user_id}`
  844. );
  845. const getPolicyDocument = baseApi<{}, { project_id: number }>(
  846. "GET",
  847. ({ project_id }) => `/api/projects/${project_id}/policy`
  848. );
  849. const createWebhookToken = baseApi<
  850. {},
  851. {
  852. project_id: number;
  853. chart_name: string;
  854. namespace: string;
  855. cluster_id: number;
  856. storage: StorageType;
  857. }
  858. >(
  859. "POST",
  860. ({ project_id, chart_name, namespace, cluster_id, storage }) =>
  861. `/api/projects/${project_id}/releases/${chart_name}/webhook_token?namespace=${namespace}&cluster_id=${cluster_id}&storage=${storage}`
  862. );
  863. // Bundle export to allow default api import (api.<method> is more readable)
  864. export default {
  865. checkAuth,
  866. connectECRRegistry,
  867. connectGCRRegistry,
  868. createAWSIntegration,
  869. overwriteAWSIntegration,
  870. createDOCR,
  871. createDOKS,
  872. createEmailVerification,
  873. createGCPIntegration,
  874. createGCR,
  875. createGHAction,
  876. createGKE,
  877. createInvite,
  878. createNamespace,
  879. createPasswordReset,
  880. createPasswordResetVerify,
  881. createPasswordResetFinalize,
  882. createProject,
  883. createConfigMap,
  884. deleteCluster,
  885. deleteConfigMap,
  886. deleteInvite,
  887. deleteNamespace,
  888. deletePod,
  889. deleteProject,
  890. deleteRegistryIntegration,
  891. createSubdomain,
  892. deployTemplate,
  893. deployAddon,
  894. destroyEKS,
  895. destroyGKE,
  896. destroyDOKS,
  897. detectBuildpack,
  898. getBranchContents,
  899. getBranches,
  900. getCapabilities,
  901. getChart,
  902. getCharts,
  903. getChartComponents,
  904. getChartControllers,
  905. getClusterIntegrations,
  906. getClusters,
  907. getCluster,
  908. getClusterNodes,
  909. getClusterNode,
  910. getConfigMap,
  911. getGitRepoList,
  912. getGitRepos,
  913. getImageRepos,
  914. getImageTags,
  915. getInfra,
  916. getIngress,
  917. getInvites,
  918. getJobs,
  919. getJobPods,
  920. getMatchingPods,
  921. getMetrics,
  922. getNamespaces,
  923. getNGINXIngresses,
  924. getOAuthIds,
  925. getPodEvents,
  926. getProcfileContents,
  927. getProjectClusters,
  928. getProjectRegistries,
  929. getProjectRepos,
  930. getProjects,
  931. getPrometheusIsInstalled,
  932. getRegistryIntegrations,
  933. getReleaseToken,
  934. getRepoIntegrations,
  935. getRepos,
  936. getRevisions,
  937. getTemplateInfo,
  938. getTemplates,
  939. getUser,
  940. linkGithubProject,
  941. getGithubAccess,
  942. listConfigMaps,
  943. logInUser,
  944. logOutUser,
  945. provisionECR,
  946. provisionEKS,
  947. registerUser,
  948. rollbackChart,
  949. uninstallTemplate,
  950. updateUser,
  951. updateConfigMap,
  952. upgradeChartValues,
  953. deleteJob,
  954. stopJob,
  955. updateInvite,
  956. getAvailableRoles,
  957. getCollaborators,
  958. updateCollaborator,
  959. removeCollaborator,
  960. getPolicyDocument,
  961. createWebhookToken,
  962. };