//native
/**
* List security policies
* List Threat Defense security policies, one page at a time. Filterable fields: id, name, description, is_default.
*/
export async function main(
auth: RT.InfobloxCsp,
filter: string | undefined,
tag_filter: string | undefined,
include_access_codes: boolean | undefined,
offset: number | undefined,
limit: number | undefined
) {
const pageOffset = offset ?? 0
const pageLimit = limit || 100
const url = new URL(
`${(auth.base_url || "https://csp.infoblox.com").replace(/\/+$/, "")}/api/atcfw/v1/security_policies`
)
if (filter != null && filter !== "") {
url.searchParams.append("_filter", filter)
}
if (tag_filter != null && tag_filter !== "") {
url.searchParams.append("_tfilter", tag_filter)
}
if (include_access_codes) {
url.searchParams.append("include_access_codes", "true")
}
url.searchParams.append("_offset", String(pageOffset))
url.searchParams.append("_limit", String(pageLimit))
const response = await fetch(url, {
method: "GET",
headers: {
Authorization: `Token ${auth.api_key}`,
Accept: "application/json",
},
})
if (!response.ok) {
throw new Error(`${response.status} ${await response.text()}`)
}
const data = (await response.json()) as { results?: unknown[] }
const results = data.results ?? []
return {
results,
offset: pageOffset,
limit: pageLimit,
next_offset: results.length === pageLimit ? pageOffset + pageLimit : null,
}
}
Submitted by hugo989 6 hours ago