OnPage API Summary


Using this function, you can get the overall information on a website as well as drill down into exact on-page issues of a website that has been scanned. As a result, you will know what functions to use for receiving detailed data for each of the found issues.

checked GET
Pricing

Your account will be charged only for posting a task.
The cost can be calculated on the Pricing page.

Description of the fields for sending a request:

Field nameTypeDescription
idstring

task identifier
required field
you can get this ID in the response of the Task POST endpoint
example:
“07131248-1535-0216-1000-17384017ad04”


‌‌‌‌As a response of the API server, you will receive JSON-encoded data containing a tasks array with the information specific to the set tasks.

Description of the fields in the results array:

Field nameTypeDescription
versionstring

the current version of the API

status_codeinteger

general status code
you can find the full list of the response codes here
Note: we strongly recommend designing a necessary system for handling related exceptional or error conditions

status_messagestring

general informational message
you can find the full list of general informational messages here

timestring

execution time, seconds

costfloat

total tasks cost, USD

tasks_countinteger

the number of tasks in the tasks array

tasks_errorinteger

the number of tasks in the tasks array returned with an error

tasksarray

array of tasks

    idstring

task identifier
unique task identifier in our system in the UUID format

    status_codeinteger

status code of the task
generated by DataForSEO; can be within the following range: 10000-60000
you can find the full list of the response codes here

    status_messagestring

informational message of the task
you can find the full list of general informational messages here

    timestring

execution time, seconds

    costfloat

cost of the task, USD

    result_countinteger

number of elements in the result array

    patharray

URL path

    dataobject

contains the same parameters that you specified in the POST request

    resultarray

array of results

        crawl_progressstring

status of the crawling session
possible values: in_progress, finished

        crawl_statusobject

details of the crawling session

            max_crawl_pagesinteger

maximum number of pages to crawl
indicates the max_crawl_pages limit you specified when setting a task

            pages_in_queueinteger

number of pages that are currently in the crawling queue

            pages_crawledinteger

number of crawled pages

        crawl_gateway_addressstring

crawler ip address
displays the IP address used by the crawler to initiate the current crawling session
you can find the full list of IPs used by our crawler in the Overview section

        crawl_stop_reasonstring

reason why the crawling stopped
information about the reason why the crawling process stopped;
possible values:
limit_exceeded - the limit set in the max_crawl_pages was exceeded;
empty_queue - all URLs in the queue were crawled;
force_stopped - the crawling process was halted using the On Page API Force Stop function;
unexpected_exception - an internal error was encountered while crawling the target, contact support for more info

        domain_infoobject

domain-wide info
on-page information about the target domain and crawling process

            namestring

domain name

            cmsstring

content management system
content management system identified on a website
the content of_the generator_meta tag
the data is taken from the first random page that returns the 200 response code
if our crawler was unable to identify the cms, the value would be nulln

            ipstring

domain ip address

            serverstring

website server
the version of the server detected on a website
the content of the server header
the information is taken from the first page which response code is 200

            crawl_startstring

time when the crawling start
date and time when the website was sent for crawling
in the UTC format: “yyyy-mm-dd hh-mm-ss +00:00”
example:
2019-11-15 12:57:46 +00:00

            crawl_endstring

time when the crawling ended
date and time when the crawling was finished
in the UTC format: “yyyy-mm-dd hh-mm-ss +00:00”
example:
2019-11-15 12:57:46 +00:00
Note: informative only if "crawl_progress" is "finished"
if "crawl_progress" is in_progress, the value will be null

            extended_crawl_statusstring

crawl status and errors
indicates the reason why a website was not crawled;
can take the following values:
no_errors - no crawling errors were detected;
site_unreachable - our crawler could not reach a website and thus was not able to obtain a status code;
invalid_page_status_code - status code of the first crawled page >= 400;
forbidden_meta_tag - the first crawled page contains the tag;
forbidden_robots - robots.txt forbids crawling the page;
forbidden_http_header - HTTP header of the page contains "X-Robots-Tag: noindex" ;
too_many_redirects - the first crawled page has more than 10 redirects;
unknown - the reason is unknown

            ssl_infoobject

ssl certificate info
information about the Secure Sockets Layer protocol detected on a website

                valid_certificateboolean

ssl certificate validity
indicates whether the ssl certificate detected on a website is not expired, suspended, revoked or invalid

                certificate_issuerstring

ssl certificate authority
the entity that issued the detected ssl certificate

                certificate_subjectstring

ssl certificate subject
the entity associated with the public key

                certificate_versionstring

ssl certificate version
indicates the version of X.509 used by an ssl certificate

                certificate_hashstring

ssl certificate hash
the version of the ssl certificate's hash function

                certificate_expiration_datestring

ssl certificate expiration date
the date and time when the ssl certificate expires
in the UTC format: “yyyy-mm-dd hh-mm-ss +00:00”
example:
2019-11-15 12:57:46 +00:00

            checksobject

website checks
other on-page check-ups related to the website

                sitemapboolean

website sitemap
indicates whether a sitemap was detected on a target website

                robots_txtboolean

robots.txt file
indicates whether a target website has a robots.txt file

                start_page_deny_flagboolean

deny flag on a start page
indicates whether a start page on a target website has a [F] flag which causes the server to return a 403 Forbidden status code to the client

                sslboolean

ssl certificate
indicates whether a target website has an SSL certificate

                http2boolean

HTTP/2 protocol
indicates whether a target website is using the HTTP/2 protocol

                test_canonicalizationboolean

canonical tags
the checkup of the server behavior when our crawler tries to access the website via IP;
is true if the canonicalization_status_code returns 301

                test_www_redirectboolean

www to non-www redirect
is true if the www to non-www or non-www to www redirect is implemented by the requested domain

                test_hidden_server_signatureobject

hidden server signature
indicates whether the server signature is hidden from crawlers
if the value is false, our crawler was able to access the website's server signature

                    test_page_not_foundboolean

404 status for a page that cannot be found
indicates whether a target responds with a 404 status code when the requested resource cannot be found

                    test_directory_browsingboolean

directory browsing not accessible
indicates whether a target website doesn't allow accessing a file directory without authentication
if the directory is not accessible, the value is true

                    test_https_redirectboolean

http requests are redirected to https
indicates whether a target website redirects http requests to the https version;
if the website's home page redirects http requests to https, the value is true

            total_pagesinteger

total crawled pages
the total number of crawled pages

            total_uncrawlable_resourcesinteger

total uncrawlable resources
the total number of resources that could not be crawled;
the resource is considered uncrawlable when the actual content type of the resource doesn't match the content type expected by the crawler

            page_not_found_status_codeinteger

status code returned by a non-existent page
in most cases, it is recommended a server returns a 404 response code

            canonicalization_status_codeinteger

status code returned by a canonicalized page
the checkup of the server behavior when our crawler tries to access the website via IP;
in most cases, it is recommended that canonicalized pages respond with a 301 or 302 status code

            directory_browsing_status_codeinteger

status code returned by a directory
the status code returned by a directory page on a target website
in most cases, it is recommended that directories respond with a 403 or 401 status code

            www_redirect_status_codeinteger

redirect status code
the status code of the www to non-www redirect
in most cases, it is recommended that redirect returns a 301 status code

            main_domainstring

root domain name

        page_metricsobject

page-specific info
metrics information on the target website pages

            links_externalinteger

number of external links
the number of links pointing to other websites

            links_internalinteger

number of internal links
the number of links pointing to other pages within the target website

            duplicate_titleinteger

number of pages with duplicate titles

            duplicate_descriptioninteger

number of pages with duplicate descriptions

            duplicate_contentinteger

number of pages with duplicate content

            broken_linksinteger

number of broken links
number of broken links across all crawled pages on a target website

            broken_resourcesinteger

number of broken resources
the number of images and other resources with broken links

            links_relation_conflictinteger

number of links present on the target website that may have a conflict
for example, if "links_relation_conflict": 2, the target website is referring to the same source by at least one internal link with the rel="nofollow" attribute and by at least one dofollow link

            redirect_loopinteger

number of redirect chains that start and end at the same URL
number of redirect chains where the destination URL redirects back to the original URL

            onpage_scorefloat

shows how website is optimized on a 100-point scale
this field shows how website is optimized considering critical on-page issues and warnings detected;
100 is the highest possible score that means website does not have any critical on-page issues and important warnings;
note that this value depends on the number of crawled pages;
learn more about how the metric is calculated in this help center article

            non_indexableinteger

number of non-indexable pages
number of pages that are blocked from being indexed by Google and other search engines by robots.txt, HTTP headers, or meta tags settings;
you can receive a list of non-indexable URLs using this endpoint

            checksobject

page-specific on-page check-ups

                canonicalinteger

number of canonical pages

                duplicate_meta_tagsinteger

number of pages with duplicate meta tags
the number of pages with more than one meta tag of the same type;
Note: available for pages with canonical check set to true

                no_descriptioninteger

number of pages with no description
the number of pages with an empty or absent description meta tag;
Note: available for pages with canonical check set to true

                frameinteger

number of pages with frames
the number of pages that contain frame, iframe, frameset tags

                large_page_sizeinteger

number of heavy pages
the number of pages that have a size exceeding 1 megabyte;
Note: available for pages with canonical check set to true

                irrelevant_descriptioninteger

number of pages with irrelevant description
the number of pages with description tags that are irrelevant to the content of a page;
the relevance threshold is 0.2;
Note: available for pages with canonical check set to true

                irrelevant_meta_keywordsinteger

number of pages with irrelevant meta keywords
the number of pages with keywords tags that are irrelevant to the content of a page;
the relevance threshold is 0.6;
Note: available for pages with canonical check set to true

                is_httpsinteger

number of pages with the https protocol

                is_httpinteger

number of pages with the http protocol

                title_too_longinteger

number of pages with long titles
the number of pages with the content of title tag exceeding 65 characters;
Note: available for pages with canonical check set to true

                low_content_rateinteger

number of pages with a low content rate
number of pages, which have the plaintext size to page size ratio of less than 0.1 or more than 0.9;
Note: available for pages with canonical check set to true

                small_page_sizeinteger

number of small pages
the number of pages that have the size smaller than 1024 bytes;
Note: available for pages with canonical check set to true

                no_h1_taginteger

number of pages with empty or absent h1 tags
Note: available for pages with canonical check set to true

                recursive_canonicalinteger

recursive canonical error
indicates the number of pages that contain rel="canonical" tag to another page, which in turn, refers back to the initial page

                no_faviconinteger

number of pages with no favicon
Note: available for pages with canonical check set to true

                no_image_altinteger

number of pages containing images without alt tags
Note: available for pages with canonical check set to true

                no_image_titleinteger

number of pages containing images without title tags
Note: available for pages with canonical check set to true

                seo_friendly_urlinteger

number of pages with seo-frienldy urls
the ‘SEO-friendliness’ of a page URL is checked by four parameters:
– the length of the relative path is less than 120 characters
– no special characters
– no dynamic parameters
– relevance of the URL to the page
if at least one of them is failed then such URL is considered as not ‘SEO-friendly’
Note: available for pages with canonical check set to true

                seo_friendly_url_characters_checkinteger

url characters check-up
the number of pages with URLs containing only uppercase and lowercase Latin characters, digits and dashes

                seo_friendly_url_dynamic_checkinteger

url dynamic check-up
the number of pages with no dynamic parameters in the url

                seo_friendly_url_keywords_checkinteger

url keyword check-up
the number of pages that have URLs consistent with the title meta tag

                seo_friendly_url_relative_length_checkinteger

url leghth check-up
the number of pages with URLs no longer than 120 characters

                title_too_shortinteger

pages with short titles
the number of pages that have titles shorter than 30 characters;
Note: available for pages with canonical check set to true

                no_content_encodinginteger

pages with no content encoding
the number of pages with no compression algorithm of the content

                high_waiting_timeinteger

pages with high waiting time
the number of pages with waiting time (aka Time to First Byte) exceeding 1.5 seconds

                high_loading_timeinteger

pages with high loading time
the number of pages with loading time exceeding 3 seconds

                is_redirectinteger

pages with redirects
the number of pages with 3XX redirects to other pages

                is_brokeninteger

broken pages
the number of pages with response codes less than 200 or greater than 400

                is_4xx_codeinteger

pages with 4xx status codes
the number of pages with 4xx response codes

                is_5xx_codeinteger

pages with 5xx status codes
the number of pages with 5xx response codes

                is_wwwinteger

pages with www
the number of pages on a www subdomain

                no_doctypeinteger

pages with no doctype
the number of pages without theDOCTYPE declaration

                no_encoding_meta_taginteger

pages with no meta tag encoding
the number of pages without Content-Type;
informative only if the encoding is not explicit in the Content-Type header;
for example: Content-Type: "text/html; charset=utf8";
Note: available for pages with canonical check set to true

                high_content_rateinteger

pages with high content rate
number of pages, which have the plaintext size to page size ratio of more than 0.9;
Note: available for pages with canonical check set to true

                low_character_countinteger

pages with low character count
the number of pages containing less than 1024 characters;
Note: available for pages with canonical check set to true

                high_character_countinteger

pages with high character count
the number of pages containing more than 256,000 characters;
Note: available for pages with canonical check set to true

                low_readability_rateinteger

pages with low readability rate
the number of pages that scored less than 15 points on the Flesch–Kincaid readability test;
Note: available for pages with canonical check set to true

                irrelevant_titleinteger

pages with irrelevant titles
the number of pages with title tags that are irrelevant to the content of the page
the relevance threshold is 0.3
Note: available for pages with canonical check set to true

                deprecated_html_tagsinteger

pages with deprecated tags
the number of pages with deprecated HTML tags;
Note: available for pages with canonical check set to true

                duplicate_title_taginteger

pages with more than one title tag
the number of pages that have more than one title tag;
Note: available for pages with canonical check set to true

                no_titleinteger

pages with no title
the number of pages with empty or absent title tags;
Note: available for pages with canonical check set to true

                flashinteger

pages with flash
the number of pages with flash elements

                lorem_ipsuminteger

pages with lorem ipsum
the number of pages with lorem ipsum content;
Note: available for pages with canonical check set to true

                has_misspellinginteger

pages with misspelling
the number of pages with spelling mistakes
informative if the check_spell was set to true in the POST array

                canonical_to_brokeninteger

canonical pages pointing to broken pages
the number of pages with a canonical link element pointing to a page that responds with a 404 error

                canonical_to_redirectinteger

canonical pages pointing to pages that redirect elsewhere
the number of pages with a canonical link element pointing to a page that responds with a 3XX redirect

                has_links_to_redirectsinteger

pages pointing to pages that redirect elsewhere
the number of pages pointing to a page that responds with a 3XX redirect

                is_orphan_pageinteger

pages with no internal links pointing to them
the number of pages with no reference from other pages of the domain

                has_meta_refresh_redirectinteger

pages with meta refresh redirect
the number of pages with tag that instructs a browser to load another page after a specified time span;
Note: available for pages with canonical check set to true

                meta_charset_consistencyinteger

pages with meta charset inconsistency
the number of pages with charset encoding not matching the actual charset of the pages

                size_greater_than_3mbinteger

pages with size larger than 3 MB
the number of pages with size exceeding 3 MB;
Note: available for pages with canonical check set to true

                has_html_doctypeinteger

pages with HTML doctype declaration
the number of pages with the DOCTYPE declaration

                https_to_http_linksinteger

pages with HTTPS protocol that link to pages with HTTP protocol
the number of pages with secure HTTPS protocol that link to pages with unsecure HTTP protocol;
Note: available for pages with canonical check set to true

                has_render_blocking_resourcesinteger

pages with render-blocking resources
the number of pages with render-blocking resources;
Note: available for pages with canonical check set to true

                redirect_chaininteger

pages with multiple redirects
the number of pages with at least two redirects between the original page and the destination page

                canonical_chaininteger

pages with canonical pointing to a page that has a canonical pointing elsewhere
the number of pages with a canonical link element pointing to a page that has a canonical pointing to a different page
e.g. page a is canonicalized to page b, which is canonicalized to page c

                is_link_relation_conflictinteger

pages on the target website that may have a link relation conflict
for example, if "is_link_relation_conflict": 1, the target website has 1 page receiving at least one internal link with the rel="nofollow" attribute and at least one dofollow link


‌‌

Instead of ‘login’ and ‘password’ use your credentials from https://app.dataforseo.com/api-access

# Instead of 'login' and 'password' use your credentials from https://app.dataforseo.com/api-access 
login="login" 
password="password" 
cred="$(printf ${login}:${password} | base64)" 
id="07281559-0695-0216-0000-c269be8b7592" 
curl --location --request GET "https://api.dataforseo.com/v3/on_page/summary/${id}" 
--header "Authorization: Basic ${cred}"  
--header "Content-Type: application/json" 
<?php
// You can download this file from here https://api.dataforseo.com/v3/_examples/php/_php_RestClient.zip
require('RestClient.php');
$api_url = 'https://api.dataforseo.com/';
// Instead of 'login' and 'password' use your credentials from https://app.dataforseo.com/api-access
$client = new RestClient($api_url, null, 'login', 'password');

try {
   $result = array();
   // using this method you can get summary for task
   // GET /v3/on_page/summary/$id
   $id = "07281559-0695-0216-0000-c269be8b7592";
   $result[] = $client->get('/v3/on_page/summary/' . $id);
   print_r($result);
   // do something with result
} catch (RestClientException $e) {
   echo "n";
   print "HTTP code: {$e->getHttpCode()}n";
   print "Error code: {$e->getCode()}n";
   print "Message: {$e->getMessage()}n";
   print  $e->getTraceAsString();
   echo "n";
}
$client = null;
?>
const task_id = '02231934-2604-0066-2000-570459f04879';

const axios = require('axios');

axios({
  method: 'get',
  url: 'https://api.dataforseo.com/v3/on_page/summary/' + task_id,
  auth: {
    username: 'login',
    password: 'password'
  },
  headers: {
    'content-type': 'application/json'
  }
}).then(function (response) {
  var result = response['data']['tasks'];
  // Result data
  console.log(result);
}).catch(function (error) {
  console.log(error);
});
from random import Random
from client import RestClient
# You can download this file from here https://api.dataforseo.com/v3/_examples/python/_python_Client.zip
client = RestClient("login", "password")

# using this method you can get summary for task
# GET /v3/on_page/summary/$id
id = "07281559-0695-0216-0000-c269be8b7592"
response = client.get("/v3/on_page/summary/" + id)
# you can find the full list of the response codes here https://docs.dataforseo.com/v3/appendix/errors
if response["status_code"] == 20000:
    print(response)
    # do something with result
else:
    print("error. Code: %d Message: %s" % (response["status_code"], response["status_message"]))
using Newtonsoft.Json;
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;

namespace DataForSeoDemos
{
    public static partial class Demos
    {
        public static async Task on_page_summary()
        {
            var httpClient = new HttpClient
            {
                BaseAddress = new Uri("https://api.dataforseo.com/"),
                // Instead of 'login' and 'password' use your credentials from https://app.dataforseo.com/api-access
                DefaultRequestHeaders = { Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes("login:password"))) }
            };
            // using this method you can get summary for task
            // GET /v3/on_page/summary/$id
            // use the task identifier that you recieved upon setting a task
            string id = "07281559-0695-0216-0000-c269be8b7592";
            var taskGetResponse = await httpClient.GetAsync("/v3/on_page/summary/" + id);
            var result = JsonConvert.DeserializeObject(await taskGetResponse.Content.ReadAsStringAsync());
            if (result.tasks != null)
            {
                foreach (var taskResult in result.tasks)
                {
                    // you can find the full list of the response codes here https://docs.dataforseo.com/v3/appendix/errors
                    if (taskResult.status_code >= 40000 || taskResult.result == null)
                        Console.WriteLine($"error. Code: {taskResult.status_code} Message: {taskResult.status_message}");
                    else
                        // do something with result
                        Console.WriteLine(String.Join(Environment.NewLine, taskResult));
                }
            }
            else
                Console.WriteLine($"error. Code: {result.status_code} Message: {result.status_message}");
        }
    }
}

The above command returns JSON structured like this:

{
  "version": "0.1.20221214",
  "status_code": 20000,
  "status_message": "Ok.",
  "time": "1.0297 sec.",
  "cost": 0,
  "tasks_count": 1,
  "tasks_error": 0,
  "tasks": [
    {
      "id": "05021654-1535-0216-0000-bb170c8efb5b",
      "status_code": 20000,
      "status_message": "Ok.",
      "time": "1.0125 sec.",
      "cost": 0,
      "result_count": 1,
      "path": [
        "v3",
        "on_page",
        "summary",
        "05021654-1535-0216-0000-bb170c8efb5b"
      ],
      "data": {
        "api": "on_page",
        "function": "summary",
        "target": "dataforseo.com",
        "max_crawl_pages": 1000,
        "enable_www_redirect_check": "true"
      },
      "result": [
        {
          "crawl_progress": "in_progress",
          "crawl_status": {
            "max_crawl_pages": 1000,
            "pages_in_queue": 142,
            "pages_crawled": 15
          },
          "crawl_gateway_address": "168.119.141.170",
          "crawl_stop_reason": null,
          "domain_info": {
            "name": "dataforseo.com",
            "cms": "powered by wpbakery page builder - drag and drop page builder for wordpress.",
            "ip": "104.26.6.202",
            "server": "cloudflare",
            "crawl_start": "2023-05-02 13:54:55 +00:00",
            "crawl_end": null,
            "extended_crawl_status": "no_errors",
            "ssl_info": {
              "valid_certificate": true,
              "certificate_issuer": "CN=GTS CA 1P5, O=Google Trust Services LLC, C=US",
              "certificate_subject": "CN=dataforseo.com",
              "certificate_version": 3,
              "certificate_hash": "sha256RSA",
              "certificate_expiration_date": "2023-07-23 14:16:19 +00:00"
            },
            "checks": {
              "sitemap": true,
              "robots_txt": true,
              "start_page_deny_flag": false,
              "ssl": true,
              "http2": true,
              "test_canonicalization": false,
              "test_www_redirect": true,
              "test_hidden_server_signature": true,
              "test_page_not_found": true,
              "test_directory_browsing": true,
              "test_https_redirect": true
            },
            "total_pages": 15,
            "total_uncrawlable_resources": 5,
            "page_not_found_status_code": 404,
            "canonicalization_status_code": 403,
            "directory_browsing_status_code": 301,
            "www_redirect_status_code": 301,
            "main_domain": "dataforseo.com"
          },
          "page_metrics": {
            "links_external": 386,
            "links_internal": 1407,
            "duplicate_title": 0,
            "duplicate_description": 0,
            "duplicate_content": 4,
            "broken_links": 0,
            "broken_resources": 0,
            "links_relation_conflict": 0,
            "redirect_loop": 0,
            "onpage_score": 96.93,
            "non_indexable": 45,
            "checks": {
              "canonical": 15,
              "duplicate_meta_tags": 15,
              "no_description": 1,
              "frame": 0,
              "large_page_size": 0,
              "irrelevant_description": 0,
              "irrelevant_meta_keywords": 15,
              "is_https": 15,
              "is_http": 0,
              "title_too_long": 1,
              "low_content_rate": 15,
              "small_page_size": 0,
              "no_h1_tag": 0,
              "recursive_canonical": 0,
              "no_favicon": 0,
              "no_image_alt": 0,
              "no_image_title": 0,
              "seo_friendly_url": 15,
              "seo_friendly_url_characters_check": 15,
              "seo_friendly_url_dynamic_check": 15,
              "seo_friendly_url_keywords_check": 15,
              "seo_friendly_url_relative_length_check": 15,
              "title_too_short": 2,
              "no_content_encoding": 0,
              "high_waiting_time": 0,
              "high_loading_time": 0,
              "is_redirect": 0,
              "is_broken": 0,
              "is_4xx_code": 0,
              "is_5xx_code": 0,
              "is_www": 0,
              "no_doctype": 0,
              "no_encoding_meta_tag": 0,
              "high_content_rate": 0,
              "low_character_count": 0,
              "high_character_count": 0,
              "low_readability_rate": 0,
              "irrelevant_title": 0,
              "deprecated_html_tags": 0,
              "duplicate_title_tag": 0,
              "no_title": 0,
              "flash": 0,
              "lorem_ipsum": 0,
              "has_misspelling": null,
              "canonical_to_broken": 0,
              "canonical_to_redirect": 0,
              "has_links_to_redirects": 0,
              "is_orphan_page": 0,
              "has_meta_refresh_redirect": 0,
              "meta_charset_consistency": 15,
              "size_greater_than_3mb": 0,
              "has_html_doctype": 15,
              "https_to_http_links": 1,
              "has_render_blocking_resources": 15,
              "redirect_chain": 0,
              "canonical_chain": 0,
              "is_link_relation_conflict": 0
            }
          }
        }
      ]
    }
  ]
}