api.tsx 25 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111
  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 deleteSlackIntegration = baseApi<
  234. {},
  235. {
  236. project_id: number;
  237. slack_integration_id: number;
  238. }
  239. >("DELETE", (pathParams) => {
  240. return `/api/projects/${pathParams.project_id}/slack_integrations/${pathParams.slack_integration_id}`;
  241. });
  242. const deployTemplate = baseApi<
  243. {
  244. templateName: string;
  245. imageURL?: string;
  246. formValues?: any;
  247. storage: StorageType;
  248. namespace: string;
  249. name: string;
  250. },
  251. {
  252. id: number;
  253. cluster_id: number;
  254. name: string;
  255. version: string;
  256. repo_url?: string;
  257. }
  258. >("POST", (pathParams) => {
  259. let { cluster_id, id, name, version, repo_url } = pathParams;
  260. if (repo_url) {
  261. return `/api/projects/${id}/deploy/${name}/${version}?cluster_id=${cluster_id}&repo_url=${repo_url}`;
  262. }
  263. return `/api/projects/${id}/deploy/${name}/${version}?cluster_id=${cluster_id}`;
  264. });
  265. const deployAddon = baseApi<
  266. {
  267. templateName: string;
  268. formValues?: any;
  269. storage: StorageType;
  270. namespace: string;
  271. name: string;
  272. },
  273. {
  274. id: number;
  275. cluster_id: number;
  276. name: string;
  277. version: string;
  278. repo_url?: string;
  279. }
  280. >("POST", (pathParams) => {
  281. let { cluster_id, id, name, version, repo_url } = pathParams;
  282. return `/api/projects/${id}/deploy/addon/${name}/${version}?cluster_id=${cluster_id}&repo_url=${repo_url}`;
  283. });
  284. const destroyCluster = baseApi<
  285. {
  286. eks_name: string;
  287. },
  288. {
  289. project_id: number;
  290. infra_id: number;
  291. }
  292. >("POST", (pathParams) => {
  293. return `/api/projects/${pathParams.project_id}/infra/${pathParams.infra_id}/eks/destroy`;
  294. });
  295. const detectBuildpack = baseApi<
  296. {},
  297. {
  298. project_id: number;
  299. git_repo_id: number;
  300. kind: string;
  301. owner: string;
  302. name: string;
  303. branch: string;
  304. }
  305. >("GET", (pathParams) => {
  306. return `/api/projects/${pathParams.project_id}/gitrepos/${pathParams.git_repo_id}/repos/${pathParams.kind}/${pathParams.owner}/${pathParams.name}/${pathParams.branch}/buildpack/detect`;
  307. });
  308. const getBranchContents = baseApi<
  309. {
  310. dir: string;
  311. },
  312. {
  313. project_id: number;
  314. git_repo_id: number;
  315. kind: string;
  316. owner: string;
  317. name: string;
  318. branch: string;
  319. }
  320. >("GET", (pathParams) => {
  321. return `/api/projects/${pathParams.project_id}/gitrepos/${pathParams.git_repo_id}/repos/${pathParams.kind}/${pathParams.owner}/${pathParams.name}/${pathParams.branch}/contents`;
  322. });
  323. const getProcfileContents = baseApi<
  324. {
  325. path: string;
  326. },
  327. {
  328. project_id: number;
  329. git_repo_id: number;
  330. kind: string;
  331. owner: string;
  332. name: string;
  333. branch: string;
  334. }
  335. >("GET", (pathParams) => {
  336. return `/api/projects/${pathParams.project_id}/gitrepos/${pathParams.git_repo_id}/repos/${pathParams.kind}/${pathParams.owner}/${pathParams.name}/${pathParams.branch}/procfile`;
  337. });
  338. const getBranches = baseApi<
  339. {},
  340. {
  341. project_id: number;
  342. git_repo_id: number;
  343. kind: string;
  344. owner: string;
  345. name: string;
  346. }
  347. >("GET", (pathParams) => {
  348. return `/api/projects/${pathParams.project_id}/gitrepos/${pathParams.git_repo_id}/repos/${pathParams.kind}/${pathParams.owner}/${pathParams.name}/branches`;
  349. });
  350. const getChart = baseApi<
  351. {
  352. namespace: string;
  353. cluster_id: number;
  354. storage: StorageType;
  355. },
  356. { id: number; name: string; revision: number }
  357. >("GET", (pathParams) => {
  358. return `/api/projects/${pathParams.id}/releases/${pathParams.name}/${pathParams.revision}`;
  359. });
  360. const getCharts = baseApi<
  361. {
  362. namespace: string;
  363. cluster_id: number;
  364. storage: StorageType;
  365. limit: number;
  366. skip: number;
  367. byDate: boolean;
  368. statusFilter: string[];
  369. },
  370. { id: number }
  371. >("GET", (pathParams) => {
  372. return `/api/projects/${pathParams.id}/releases`;
  373. });
  374. const getChartComponents = baseApi<
  375. {
  376. namespace: string;
  377. cluster_id: number;
  378. storage: StorageType;
  379. },
  380. { id: number; name: string; revision: number }
  381. >("GET", (pathParams) => {
  382. return `/api/projects/${pathParams.id}/releases/${pathParams.name}/${pathParams.revision}/components`;
  383. });
  384. const getChartControllers = baseApi<
  385. {
  386. namespace: string;
  387. cluster_id: number;
  388. storage: StorageType;
  389. },
  390. { id: number; name: string; revision: number }
  391. >("GET", (pathParams) => {
  392. return `/api/projects/${pathParams.id}/releases/${pathParams.name}/${pathParams.revision}/controllers`;
  393. });
  394. const getClusterIntegrations = baseApi("GET", "/api/integrations/cluster");
  395. const getClusters = baseApi<{}, { id: number }>("GET", (pathParams) => {
  396. return `/api/projects/${pathParams.id}/clusters`;
  397. });
  398. const getCluster = 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}`;
  406. });
  407. const getClusterNodes = baseApi<
  408. {},
  409. {
  410. project_id: number;
  411. cluster_id: number;
  412. }
  413. >("GET", (pathParams) => {
  414. return `/api/projects/${pathParams.project_id}/clusters/${pathParams.cluster_id}/nodes`;
  415. });
  416. const getClusterNode = baseApi<
  417. {},
  418. {
  419. project_id: number;
  420. cluster_id: number;
  421. nodeName: string;
  422. }
  423. >(
  424. "GET",
  425. (pathParams) =>
  426. `/api/projects/${pathParams.project_id}/clusters/${pathParams.cluster_id}/node/${pathParams.nodeName}`
  427. );
  428. const getGitRepoList = baseApi<
  429. {},
  430. {
  431. project_id: number;
  432. git_repo_id: number;
  433. }
  434. >("GET", (pathParams) => {
  435. return `/api/projects/${pathParams.project_id}/gitrepos/${pathParams.git_repo_id}/repos`;
  436. });
  437. const getGitRepos = baseApi<
  438. {},
  439. {
  440. project_id: number;
  441. }
  442. >("GET", (pathParams) => {
  443. return `/api/projects/${pathParams.project_id}/gitrepos`;
  444. });
  445. const getImageRepos = baseApi<
  446. {},
  447. {
  448. project_id: number;
  449. registry_id: number;
  450. }
  451. >("GET", (pathParams) => {
  452. return `/api/projects/${pathParams.project_id}/registries/${pathParams.registry_id}/repositories`;
  453. });
  454. const getImageTags = baseApi<
  455. {},
  456. {
  457. project_id: number;
  458. registry_id: number;
  459. repo_name: string;
  460. }
  461. >("GET", (pathParams) => {
  462. return `/api/projects/${pathParams.project_id}/registries/${pathParams.registry_id}/repositories/${pathParams.repo_name}`;
  463. });
  464. const getInfra = baseApi<
  465. {},
  466. {
  467. project_id: number;
  468. }
  469. >("GET", (pathParams) => {
  470. return `/api/projects/${pathParams.project_id}/infra`;
  471. });
  472. const getIngress = baseApi<
  473. {
  474. cluster_id: number;
  475. },
  476. { name: string; namespace: string; id: number }
  477. >("GET", (pathParams) => {
  478. return `/api/projects/${pathParams.id}/k8s/${pathParams.namespace}/ingress/${pathParams.name}`;
  479. });
  480. const getInvites = baseApi<{}, { id: number }>("GET", (pathParams) => {
  481. return `/api/projects/${pathParams.id}/invites`;
  482. });
  483. const getJobs = baseApi<
  484. {
  485. cluster_id: number;
  486. },
  487. { chart: string; namespace: string; release_name: string; id: number }
  488. >("GET", (pathParams) => {
  489. return `/api/projects/${pathParams.id}/k8s/${pathParams.namespace}/${pathParams.chart}/${pathParams.release_name}/jobs`;
  490. });
  491. const getJobPods = baseApi<
  492. {
  493. cluster_id: number;
  494. },
  495. { name: string; namespace: string; id: number }
  496. >("GET", (pathParams) => {
  497. return `/api/projects/${pathParams.id}/k8s/jobs/${pathParams.namespace}/${pathParams.name}/pods`;
  498. });
  499. const getMatchingPods = baseApi<
  500. {
  501. cluster_id: number;
  502. namespace: string;
  503. selectors: string[];
  504. },
  505. { id: number }
  506. >("GET", (pathParams) => {
  507. return `/api/projects/${pathParams.id}/k8s/pods`;
  508. });
  509. const getMetrics = baseApi<
  510. {
  511. cluster_id: number;
  512. metric: string;
  513. shouldsum: boolean;
  514. pods?: string[];
  515. kind?: string; // the controller kind
  516. name: string;
  517. namespace: string;
  518. startrange: number;
  519. endrange: number;
  520. resolution: string;
  521. },
  522. { id: number }
  523. >("GET", (pathParams) => {
  524. return `/api/projects/${pathParams.id}/k8s/metrics`;
  525. });
  526. const getNamespaces = baseApi<
  527. {
  528. cluster_id: number;
  529. },
  530. { id: number }
  531. >("GET", (pathParams) => {
  532. return `/api/projects/${pathParams.id}/k8s/namespaces`;
  533. });
  534. const getNGINXIngresses = baseApi<
  535. {
  536. cluster_id: number;
  537. },
  538. { id: number }
  539. >("GET", (pathParams) => {
  540. return `/api/projects/${pathParams.id}/k8s/prometheus/ingresses`;
  541. });
  542. const getOAuthIds = baseApi<
  543. {},
  544. {
  545. project_id: number;
  546. }
  547. >("GET", (pathParams) => {
  548. return `/api/projects/${pathParams.project_id}/integrations/oauth`;
  549. });
  550. const getProjectClusters = baseApi<{}, { id: number }>("GET", (pathParams) => {
  551. return `/api/projects/${pathParams.id}/clusters`;
  552. });
  553. const getProjectRegistries = baseApi<{}, { id: number }>(
  554. "GET",
  555. (pathParams) => {
  556. return `/api/projects/${pathParams.id}/registries`;
  557. }
  558. );
  559. const getProjectRepos = baseApi<{}, { id: number }>("GET", (pathParams) => {
  560. return `/api/projects/${pathParams.id}/repos`;
  561. });
  562. const getProjects = baseApi<{}, { id: number }>("GET", (pathParams) => {
  563. return `/api/users/${pathParams.id}/projects`;
  564. });
  565. const getPrometheusIsInstalled = baseApi<
  566. {
  567. cluster_id: number;
  568. },
  569. { id: number }
  570. >("GET", (pathParams) => {
  571. return `/api/projects/${pathParams.id}/k8s/prometheus/detect`;
  572. });
  573. const getRegistryIntegrations = baseApi("GET", "/api/integrations/registry");
  574. const getReleaseToken = baseApi<
  575. {
  576. namespace: string;
  577. cluster_id: number;
  578. storage: StorageType;
  579. },
  580. { name: string; id: number }
  581. >("GET", (pathParams) => {
  582. return `/api/projects/${pathParams.id}/releases/${pathParams.name}/webhook_token`;
  583. });
  584. const destroyEKS = baseApi<
  585. {
  586. eks_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}/eks/destroy`;
  594. });
  595. const destroyGKE = baseApi<
  596. {
  597. gke_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}/gke/destroy`;
  605. });
  606. const destroyDOKS = baseApi<
  607. {
  608. doks_name: string;
  609. },
  610. {
  611. project_id: number;
  612. infra_id: number;
  613. }
  614. >("POST", (pathParams) => {
  615. return `/api/projects/${pathParams.project_id}/infra/${pathParams.infra_id}/doks/destroy`;
  616. });
  617. const getRepoIntegrations = baseApi("GET", "/api/integrations/repo");
  618. const getRepos = baseApi<{}, { id: number }>("GET", (pathParams) => {
  619. return `/api/projects/${pathParams.id}/repos`;
  620. });
  621. const getSlackIntegrations = baseApi<{}, { id: number }>(
  622. "GET",
  623. (pathParams) => {
  624. return `/api/projects/${pathParams.id}/slack_integrations`;
  625. }
  626. );
  627. const getRevisions = baseApi<
  628. {
  629. namespace: string;
  630. cluster_id: number;
  631. storage: StorageType;
  632. },
  633. { id: number; name: string }
  634. >("GET", (pathParams) => {
  635. return `/api/projects/${pathParams.id}/releases/${pathParams.name}/history`;
  636. });
  637. const getTemplateInfo = baseApi<
  638. {
  639. repo_url?: string;
  640. },
  641. { name: string; version: string }
  642. >("GET", (pathParams) => {
  643. return `/api/templates/${pathParams.name}/${pathParams.version}`;
  644. });
  645. const getTemplateUpgradeNotes = baseApi<
  646. {
  647. repo_url?: string;
  648. prev_version: string;
  649. },
  650. { name: string; version: string }
  651. >("GET", (pathParams) => {
  652. return `/api/templates/upgrade_notes/${pathParams.name}/${pathParams.version}`;
  653. });
  654. const getTemplates = baseApi<
  655. {
  656. repo_url?: string;
  657. },
  658. {}
  659. >("GET", "/api/templates");
  660. const getUser = baseApi<{}, { id: number }>("GET", (pathParams) => {
  661. return `/api/users/${pathParams.id}`;
  662. });
  663. const getCapabilities = baseApi<{}, {}>("GET", () => {
  664. return `/api/capabilities`;
  665. });
  666. const linkGithubProject = baseApi<
  667. {},
  668. {
  669. project_id: number;
  670. }
  671. >("GET", (pathParams) => {
  672. return `/api/oauth/projects/${pathParams.project_id}/github`;
  673. });
  674. const getGithubAccess = baseApi<{}, {}>("GET", () => {
  675. return `/api/integrations/github-app/access`;
  676. });
  677. const logInUser = baseApi<{
  678. email: string;
  679. password: string;
  680. }>("POST", "/api/login");
  681. const logOutUser = baseApi("POST", "/api/logout");
  682. const provisionECR = baseApi<
  683. {
  684. ecr_name: string;
  685. aws_integration_id: string;
  686. },
  687. { id: number }
  688. >("POST", (pathParams) => {
  689. return `/api/projects/${pathParams.id}/provision/ecr`;
  690. });
  691. const provisionEKS = baseApi<
  692. {
  693. eks_name: string;
  694. aws_integration_id: string;
  695. machine_type: string;
  696. },
  697. { id: number }
  698. >("POST", (pathParams) => {
  699. return `/api/projects/${pathParams.id}/provision/eks`;
  700. });
  701. const registerUser = baseApi<{
  702. email: string;
  703. password: string;
  704. }>("POST", "/api/users");
  705. const rollbackChart = baseApi<
  706. {
  707. namespace: string;
  708. storage: StorageType;
  709. revision: number;
  710. },
  711. {
  712. id: number;
  713. name: string;
  714. cluster_id: number;
  715. }
  716. >("POST", (pathParams) => {
  717. let { id, name, cluster_id } = pathParams;
  718. return `/api/projects/${id}/releases/${name}/rollback?cluster_id=${cluster_id}`;
  719. });
  720. const uninstallTemplate = baseApi<
  721. {},
  722. {
  723. id: number;
  724. name: string;
  725. cluster_id: number;
  726. namespace: string;
  727. storage: StorageType;
  728. }
  729. >("POST", (pathParams) => {
  730. let { id, name, cluster_id, storage, namespace } = pathParams;
  731. return `/api/projects/${id}/delete/${name}?cluster_id=${cluster_id}&namespace=${namespace}&storage=${storage}`;
  732. });
  733. const updateUser = baseApi<
  734. {
  735. rawKubeConfig?: string;
  736. allowedContexts?: string[];
  737. },
  738. { id: number }
  739. >("PUT", (pathParams) => {
  740. return `/api/users/${pathParams.id}`;
  741. });
  742. const upgradeChartValues = baseApi<
  743. {
  744. namespace: string;
  745. storage: StorageType;
  746. values: string;
  747. version?: string;
  748. },
  749. {
  750. id: number;
  751. name: string;
  752. cluster_id: number;
  753. }
  754. >("POST", (pathParams) => {
  755. let { id, name, cluster_id } = pathParams;
  756. return `/api/projects/${id}/releases/${name}/upgrade?cluster_id=${cluster_id}`;
  757. });
  758. const listConfigMaps = baseApi<
  759. {
  760. namespace: string;
  761. cluster_id: number;
  762. },
  763. { id: number }
  764. >("GET", (pathParams) => {
  765. return `/api/projects/${pathParams.id}/k8s/configmap/list`;
  766. });
  767. const getConfigMap = baseApi<
  768. {
  769. name: string;
  770. namespace: string;
  771. cluster_id: number;
  772. },
  773. { id: number }
  774. >("GET", (pathParams) => {
  775. return `/api/projects/${pathParams.id}/k8s/configmap`;
  776. });
  777. const createConfigMap = baseApi<
  778. {
  779. name: string;
  780. namespace: string;
  781. variables: Record<string, string>;
  782. secret_variables?: Record<string, string>;
  783. },
  784. { id: number; cluster_id: number }
  785. >("POST", (pathParams) => {
  786. let { id, cluster_id } = pathParams;
  787. return `/api/projects/${id}/k8s/configmap/create?cluster_id=${cluster_id}`;
  788. });
  789. const updateConfigMap = baseApi<
  790. {
  791. name: string;
  792. namespace: string;
  793. variables: Record<string, string>;
  794. secret_variables?: Record<string, string>;
  795. },
  796. { id: number; cluster_id: number }
  797. >("POST", (pathParams) => {
  798. let { id, cluster_id } = pathParams;
  799. return `/api/projects/${id}/k8s/configmap/update?cluster_id=${cluster_id}`;
  800. });
  801. const renameConfigMap = baseApi<
  802. {
  803. name: string;
  804. namespace: string;
  805. new_name: string;
  806. },
  807. { id: number; cluster_id: number }
  808. >("POST", (pathParams) => {
  809. let { id, cluster_id } = pathParams;
  810. return `/api/projects/${id}/k8s/configmap/rename?cluster_id=${cluster_id}`;
  811. });
  812. const deleteConfigMap = baseApi<
  813. {
  814. name: string;
  815. namespace: string;
  816. cluster_id: number;
  817. },
  818. { id: number }
  819. >("DELETE", (pathParams) => {
  820. return `/api/projects/${pathParams.id}/k8s/configmap/delete`;
  821. });
  822. const createNamespace = baseApi<
  823. {
  824. name: string;
  825. },
  826. { id: number; cluster_id: number }
  827. >("POST", (pathParams) => {
  828. let { id, cluster_id } = pathParams;
  829. return `/api/projects/${id}/k8s/namespaces/create?cluster_id=${cluster_id}`;
  830. });
  831. const deleteNamespace = baseApi<
  832. {
  833. name: string;
  834. cluster_id: number;
  835. },
  836. { id: number }
  837. >("DELETE", (pathParams) => {
  838. let { id } = pathParams;
  839. return `/api/projects/${id}/k8s/namespaces/delete`;
  840. });
  841. const deleteJob = baseApi<
  842. { cluster_id: number },
  843. { name: string; namespace: string; id: number }
  844. >("DELETE", (pathParams) => {
  845. let { id, name, namespace } = pathParams;
  846. return `/api/projects/${id}/k8s/jobs/${namespace}/${name}`;
  847. });
  848. const stopJob = baseApi<
  849. {},
  850. { name: string; namespace: string; id: number; cluster_id: number }
  851. >("POST", (pathParams) => {
  852. let { id, name, namespace, cluster_id } = pathParams;
  853. return `/api/projects/${id}/k8s/jobs/${namespace}/${name}/stop?cluster_id=${cluster_id}`;
  854. });
  855. const getAvailableRoles = baseApi<{}, { project_id: number }>(
  856. "GET",
  857. ({ project_id }) => `/api/projects/${project_id}/roles`
  858. );
  859. const updateInvite = baseApi<
  860. { kind: string },
  861. { project_id: number; invite_id: number }
  862. >(
  863. "POST",
  864. ({ project_id, invite_id }) =>
  865. `/api/projects/${project_id}/invites/${invite_id}`
  866. );
  867. const getCollaborators = baseApi<{}, { project_id: number }>(
  868. "GET",
  869. ({ project_id }) => `/api/projects/${project_id}/collaborators`
  870. );
  871. const updateCollaborator = baseApi<
  872. { kind: string },
  873. { project_id: number; user_id: number }
  874. >(
  875. "POST",
  876. ({ project_id, user_id }) => `/api/projects/${project_id}/roles/${user_id}`
  877. );
  878. const removeCollaborator = baseApi<{}, { project_id: number; user_id: number }>(
  879. "DELETE",
  880. ({ project_id, user_id }) => `/api/projects/${project_id}/roles/${user_id}`
  881. );
  882. const getPolicyDocument = baseApi<{}, { project_id: number }>(
  883. "GET",
  884. ({ project_id }) => `/api/projects/${project_id}/policy`
  885. );
  886. const createWebhookToken = baseApi<
  887. {},
  888. {
  889. project_id: number;
  890. chart_name: string;
  891. namespace: string;
  892. cluster_id: number;
  893. storage: StorageType;
  894. }
  895. >(
  896. "POST",
  897. ({ project_id, chart_name, namespace, cluster_id, storage }) =>
  898. `/api/projects/${project_id}/releases/${chart_name}/webhook_token?namespace=${namespace}&cluster_id=${cluster_id}&storage=${storage}`
  899. );
  900. // Bundle export to allow default api import (api.<method> is more readable)
  901. export default {
  902. checkAuth,
  903. connectECRRegistry,
  904. connectGCRRegistry,
  905. createAWSIntegration,
  906. overwriteAWSIntegration,
  907. createDOCR,
  908. createDOKS,
  909. createEmailVerification,
  910. createGCPIntegration,
  911. createGCR,
  912. createGHAction,
  913. createGKE,
  914. createInvite,
  915. createNamespace,
  916. createPasswordReset,
  917. createPasswordResetVerify,
  918. createPasswordResetFinalize,
  919. createProject,
  920. createConfigMap,
  921. deleteCluster,
  922. deleteConfigMap,
  923. deleteInvite,
  924. deleteNamespace,
  925. deletePod,
  926. deleteProject,
  927. deleteRegistryIntegration,
  928. deleteSlackIntegration,
  929. createSubdomain,
  930. deployTemplate,
  931. deployAddon,
  932. destroyEKS,
  933. destroyGKE,
  934. destroyDOKS,
  935. detectBuildpack,
  936. getBranchContents,
  937. getBranches,
  938. getCapabilities,
  939. getChart,
  940. getCharts,
  941. getChartComponents,
  942. getChartControllers,
  943. getClusterIntegrations,
  944. getClusters,
  945. getCluster,
  946. getClusterNodes,
  947. getClusterNode,
  948. getConfigMap,
  949. getGitRepoList,
  950. getGitRepos,
  951. getImageRepos,
  952. getImageTags,
  953. getInfra,
  954. getIngress,
  955. getInvites,
  956. getJobs,
  957. getJobPods,
  958. getMatchingPods,
  959. getMetrics,
  960. getNamespaces,
  961. getNGINXIngresses,
  962. getOAuthIds,
  963. getPodEvents,
  964. getProcfileContents,
  965. getProjectClusters,
  966. getProjectRegistries,
  967. getProjectRepos,
  968. getProjects,
  969. getPrometheusIsInstalled,
  970. getRegistryIntegrations,
  971. getReleaseToken,
  972. getRepoIntegrations,
  973. getSlackIntegrations,
  974. getRepos,
  975. getRevisions,
  976. getTemplateInfo,
  977. getTemplateUpgradeNotes,
  978. getTemplates,
  979. getUser,
  980. linkGithubProject,
  981. getGithubAccess,
  982. listConfigMaps,
  983. logInUser,
  984. logOutUser,
  985. provisionECR,
  986. provisionEKS,
  987. registerUser,
  988. rollbackChart,
  989. uninstallTemplate,
  990. updateUser,
  991. renameConfigMap,
  992. updateConfigMap,
  993. upgradeChartValues,
  994. deleteJob,
  995. stopJob,
  996. updateInvite,
  997. getAvailableRoles,
  998. getCollaborators,
  999. updateCollaborator,
  1000. removeCollaborator,
  1001. getPolicyDocument,
  1002. createWebhookToken,
  1003. };