INTEGRITY Dokumentace

Běžná volání API

Následující části obsahují ukázkové požadavky pro běžná volání API. Seznam dostupných koncových bodů API najdete v Endpointy.

Výpis všech programů

Tento příklad načte všechny programy Programmable Flow Protection v účtu.

Požadavek
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/programs" \
--header "Authorization: Bearer <API_TOKEN>"
Odpověď
{
  "result": [
    {
      "id": "<PROGRAM_ID>",
      "name": "rate-limiter",
      "status": "success",
      "created_on": "<TIMESTAMP>",
      "modified_on": "<TIMESTAMP>"
    }
  ],
  "success": true,
  "errors": [],
  "messages": []
}

Nahrání programu

Tento příklad nahraje nový program eBPF napsaný v jazyce C. Zdrojový kód programu se odesílá jako tělo požadavku s Content-Type: text/plain.

Vložte volitelný X-Program-Name k zadání čitelného názvu programu. Pokud ji vynecháte, API vygeneruje jako název programu UUID.

Požadavek
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/programs" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: text/plain" \
--header "X-Program-Name: my-rate-limiter" \
--data-binary "@/path/to/program.c"
Odpověď
{
  "result": {
    "id": "<PROGRAM_ID>",
    "name": "my-rate-limiter",
    "status": "success",
    "created_on": "<TIMESTAMP>",
    "modified_on": "<TIMESTAMP>"
  },
  "success": true,
  "errors": [],
  "messages": []
}

Pokud program neprojde kompilací nebo ověřením, API vrátí podrobnou chybovou zprávu:

Ukázková chybová odpověď
{
  "result": null,
  "success": false,
  "errors": [
    {
      "code": 1001,
      "message": "Program verification failed: invalid memory access at line 42"
    }
  ],
  "messages": []
}

Aktualizace programu

Tento příklad aktualizuje existující program novým zdrojovým kódem. Program lze aktualizovat, i když jej právě používá jedno nebo více pravidel. Pokud nový program neprojde kompilací nebo ověřením, aktualizace selže a aktivní zůstane původní program.

Požadavek
curl --request PATCH \
"https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/programs/{program_id}" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: text/plain" \
--data-binary "@/path/to/updated-program.c"
Odpověď
{
  "result": {
    "id": "<PROGRAM_ID>",
    "name": "program",
    "status": "success",
    "created_on": "<TIMESTAMP>",
    "modified_on": "<TIMESTAMP>"
  },
  "success": true,
  "errors": [],
  "messages": []
}

Smazat program

Tento příklad odstraní program. Program, na který odkazuje aktivní pravidlo, odstranit nelze.

Požadavek
curl --request DELETE \
"https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/programs/{program_id}" \
--header "Authorization: Bearer <API_TOKEN>"
Odpověď
{
  "result": null,
  "success": true,
  "errors": [],
  "messages": []
}

Výpis všech pravidel

Tento příklad načte všechna pravidla Programmable Flow Protection v účtu.

Požadavek
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/rules" \
--header "Authorization: Bearer <API_TOKEN>"
Odpověď
{
  "result": [
    {
      "id": "<RULE_ID>",
      "program_id": "<PROGRAM_ID>",
      "scope": "global",
      "name": "global",
      "mode": "enabled",
      "expression": "",
      "created_on": "<TIMESTAMP>",
      "modified_on": "<TIMESTAMP>"
    }
  ],
  "success": true,
  "errors": [],
  "messages": []
}

Vytvoření pravidla

Tento příklad vytvoří pravidlo Programmable Flow Protection s globálním rozsahem v režimu monitorování.

Požadavek
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/rules" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "program_id": "<PROGRAM_ID>",
  "scope": "global",
  "name": "global",
  "mode": "monitoring"
}'
Odpověď
{
  "result": {
    "id": "<RULE_ID>",
    "program_id": "<PROGRAM_ID>",
    "scope": "global",
    "name": "global",
    "mode": "monitoring",
    "expression": "",
    "created_on": "<TIMESTAMP>",
    "modified_on": "<TIMESTAMP>"
  },
  "success": true,
  "errors": [],
  "messages": []
}

Viz Objekty JSON s popisem polí v těle JSON.

Vytvoření pravidla s regionálním rozsahem

Tento příklad vytvoří pravidlo s rozsahem omezeným na region Western Europe a s filtrem podle výrazu.

Požadavek
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/rules" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "program_id": "<PROGRAM_ID>",
  "scope": "region",
  "name": "WEUR",
  "mode": "enabled",
  "expression": "ip.dst in { 192.0.2.0/24 }"
}'
Odpověď
{
  "result": {
    "id": "<RULE_ID>",
    "program_id": "<PROGRAM_ID>",
    "scope": "region",
    "name": "WEUR",
    "mode": "enabled",
    "expression": "ip.dst in { 192.0.2.0/24 }",
    "created_on": "<TIMESTAMP>",
    "modified_on": "<TIMESTAMP>"
  },
  "success": true,
  "errors": [],
  "messages": []
}

Viz Objekty JSON s popisem polí v těle JSON.

Aktualizace pravidla

Tento příklad aktualizuje existující pravidlo. Změnit lze režim, rozsah a výraz, nikoli však program. Chcete-li změnit program, pravidlo odstraňte a vytvořte nové.

Požadavek
curl --request PATCH \
"https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/rules/{rule_id}" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "mode": "enabled"
}'
Odpověď
{
  "result": {
    "id": "<RULE_ID>",
    "program_id": "<PROGRAM_ID>",
    "scope": "global",
    "name": "global",
    "mode": "enabled",
    "expression": "",
    "created_on": "<TIMESTAMP>",
    "modified_on": "<TIMESTAMP>"
  },
  "success": true,
  "errors": [],
  "messages": []
}

Viz Objekty JSON s popisem polí v těle JSON.

Smazat pravidlo

Tento příklad odstraní existující pravidlo.

Požadavek
curl --request DELETE \
"https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/rules/{rule_id}" \
--header "Authorization: Bearer <API_TOKEN>"
Odpověď
{
  "result": null,
  "success": true,
  "errors": [],
  "messages": []
}

Ladění programu pomocí PCAP

Tento příklad spustí program nad souborem PCAP za účelem ladění. Rozhraní API vrátí soubor PCAP s anotacemi, které u každého paketu uvádějí verdikt programu.

Tělo požadavku musí obsahovat soubor PCAP v binárním formátu. Rozhraní API zjistí posun hlavičky IP automaticky podle vstupního souboru PCAP. Automatickou detekci přepíšete volitelným ip_offset parametr dotazu pro určení počtu bajtů, o které je v každém paketu posunuta hlavička IP (například 14 pro ethernetové rámce).

Požadavek
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/programs/{program_id}/pcap" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/vnd.tcpdump.pcap" \
--data-binary "@/path/to/input.pcap" \
--output output.pcap

Výstupní soubor PCAP obsahuje stejné pakety jako vstupní soubor, u každého paketu jsou však doplněny anotace. Anotace Packet Comment může obsahovat: