Create a zone, seed it with a DNS record, and read the zone back.
Provisions a new zone for a domain under the supplied account, adds an initial DNS record, and then fetches the zone details to retrieve its name servers and activation status.
arazzo: 1.0.1
info:
title: Cloudflare Provision Zone with DNS
summary: Create a zone, add a root DNS record, then read the zone details back.
description: >-
An onboarding flow for bringing a new domain onto Cloudflare. The workflow
creates a zone under an account, adds an initial DNS record to that zone,
and reads the zone details back to capture the assigned name servers and
status. Each step inlines its request and asserts both the documented HTTP
200 status and the Cloudflare {success, result} envelope flag.
version: 1.0.0
sourceDescriptions:
- name: zonesApi
url: ../openapi/cloudflare-zones-api-openapi.yml
type: openapi
workflows:
- workflowId: provision-zone-with-dns
summary: Create a zone, seed it with a DNS record, and read the zone back.
description: >-
Provisions a new zone for a domain under the supplied account, adds an
initial DNS record, and then fetches the zone details to retrieve its name
servers and activation status.
inputs:
type: object
required:
- accountId
- zoneName
- recordType
- recordName
- recordContent
properties:
accountId:
type: string
description: The account identifier that will own the new zone.
zoneName:
type: string
description: The domain name for the new zone (e.g. example.com).
recordType:
type: string
description: The DNS record type to seed (e.g. A, CNAME).
recordName:
type: string
description: The DNS record name to seed (e.g. example.com or www.example.com).
recordContent:
type: string
description: The DNS record content value (e.g. an IP address or target).
steps:
- stepId: createZone
description: Create a new full zone for the domain under the supplied account.
operationId: zones-post
requestBody:
contentType: application/json
payload:
name: $inputs.zoneName
account:
id: $inputs.accountId
type: full
successCriteria:
- condition: $statusCode == 200
- context: $response.body
condition: $.success == true
type: jsonpath
outputs:
zoneId: $response.body#/result/id
- stepId: addDnsRecord
description: Add an initial DNS record to the newly created zone.
operationId: dns-records-for-a-zone-create-dns-record
parameters:
- name: zone_id
in: path
value: $steps.createZone.outputs.zoneId
requestBody:
contentType: application/json
payload:
type: $inputs.recordType
name: $inputs.recordName
content: $inputs.recordContent
successCriteria:
- condition: $statusCode == 200
- context: $response.body
condition: $.success == true
type: jsonpath
outputs:
recordId: $response.body#/result/id
- stepId: getZone
description: Read the zone details back to capture name servers and status.
operationId: zones-0-get
parameters:
- name: zone_id
in: path
value: $steps.createZone.outputs.zoneId
successCriteria:
- condition: $statusCode == 200
- context: $response.body
condition: $.success == true
type: jsonpath
outputs:
status: $response.body#/result/status
nameServers: $response.body#/result/name_servers
outputs:
zoneId: $steps.createZone.outputs.zoneId
recordId: $steps.addDnsRecord.outputs.recordId
status: $steps.getZone.outputs.status
nameServers: $steps.getZone.outputs.nameServers
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.