* Maps a validated query operation to the Vanta API request it performs.
(baseUrl: string, params: VantaQueryBody)
| 49 | * Maps a validated query operation to the Vanta API request it performs. |
| 50 | */ |
| 51 | function buildVantaApiRequest(baseUrl: string, params: VantaQueryBody): VantaApiRequest { |
| 52 | const id = encodeURIComponent |
| 53 | |
| 54 | switch (params.operation) { |
| 55 | case 'vanta_list_frameworks': |
| 56 | return { |
| 57 | method: 'GET', |
| 58 | url: buildVantaUrl(baseUrl, '/frameworks', { |
| 59 | pageSize: params.pageSize, |
| 60 | pageCursor: params.pageCursor, |
| 61 | }), |
| 62 | } |
| 63 | case 'vanta_get_framework': |
| 64 | return { method: 'GET', url: buildVantaUrl(baseUrl, `/frameworks/${id(params.frameworkId)}`) } |
| 65 | case 'vanta_list_framework_controls': |
| 66 | return { |
| 67 | method: 'GET', |
| 68 | url: buildVantaUrl(baseUrl, `/frameworks/${id(params.frameworkId)}/controls`, { |
| 69 | pageSize: params.pageSize, |
| 70 | pageCursor: params.pageCursor, |
| 71 | }), |
| 72 | } |
| 73 | case 'vanta_list_controls': |
| 74 | return { |
| 75 | method: 'GET', |
| 76 | url: buildVantaUrl(baseUrl, '/controls', { |
| 77 | frameworkMatchesAny: splitVantaCommaList(params.frameworkMatchesAny), |
| 78 | pageSize: params.pageSize, |
| 79 | pageCursor: params.pageCursor, |
| 80 | }), |
| 81 | } |
| 82 | case 'vanta_get_control': |
| 83 | return { method: 'GET', url: buildVantaUrl(baseUrl, `/controls/${id(params.controlId)}`) } |
| 84 | case 'vanta_list_control_tests': |
| 85 | return { |
| 86 | method: 'GET', |
| 87 | url: buildVantaUrl(baseUrl, `/controls/${id(params.controlId)}/tests`, { |
| 88 | pageSize: params.pageSize, |
| 89 | pageCursor: params.pageCursor, |
| 90 | }), |
| 91 | } |
| 92 | case 'vanta_list_control_documents': |
| 93 | return { |
| 94 | method: 'GET', |
| 95 | url: buildVantaUrl(baseUrl, `/controls/${id(params.controlId)}/documents`, { |
| 96 | pageSize: params.pageSize, |
| 97 | pageCursor: params.pageCursor, |
| 98 | }), |
| 99 | } |
| 100 | case 'vanta_list_tests': |
| 101 | return { |
| 102 | method: 'GET', |
| 103 | url: buildVantaUrl(baseUrl, '/tests', { |
| 104 | statusFilter: params.statusFilter, |
| 105 | frameworkFilter: params.frameworkFilter, |
| 106 | integrationFilter: params.integrationFilter, |
| 107 | controlFilter: params.controlFilter, |
| 108 | ownerFilter: params.ownerFilter, |
no test coverage detected