[[contract-dsl-http-top-level-elements]] == HTTP Top-Level Elements include::partial$_attributes.adoc[] You can call the following methods in the top-level closure of a contract definition: * `request`: Mandatory * `response` : Mandatory * `priority`: Optional The following example shows how to define an HTTP request contract: ==== [source,groovy,indent=0,subs="verbatim",role="primary"] .Groovy ---- include::{verifier_root_path}/src/test/groovy/org/springframework/cloud/contract/verifier/builder/ContractHttpDocsSpec.groovy[tags=http_dsl,indent=0] ---- [source,yml,indent=0,subs="verbatim",role="secondary"] .YAML ---- include::{verifier_root_path}/src/test/resources/yml/contract.yml[tags=priority,indent=0] include::{verifier_root_path}/src/test/resources/yml/contract.yml[tags=request,indent=0] ... include::{verifier_root_path}/src/test/resources/yml/contract.yml[tags=response,indent=0] ... ---- [source,java,indent=0,subs="verbatim",role="secondary"] .Java ---- include::{verifier_root_path}/src/test/resources/contractsToCompile/contract_docs_examples.java[tags=http_dsl,indent=0] ---- [source,kotlin,indent=0,subs="verbatim",role="secondary"] .Kotlin ---- include::{verifier_root_path}/src/test/resources/kotlin/contract_docs_examples.kts[tags=http_dsl,indent=0] ---- ==== IMPORTANT: If you want to make your contract have a higher priority, you need to pass a lower number to the `priority` tag or method. For example, a `priority` with a value of `5` has higher priority than a `priority` with a value of `10`.