1environments:
  2  local:
  3    host: https://httpbin.org
  4  test:
  5    host: https://httpbin.org
  6
  7requests:
  8  # HTTP Methods
  9  get_request:
 10    method: GET
 11    url: "{{host}}/get"
 12    description: "Simple GET with query parameters"
 13    params:
 14      foo: bar
 15      random: "[[int]]"
 16
 17  post_request:
 18    method: POST
 19    url: "{{host}}/post"
 20    description: "Simple POST with JSON body"
 21    json:
 22      name: "[[name]]"
 23      action: "create"
 24
 25  put_request:
 26    method: PUT
 27    url: "{{host}}/put"
 28    description: "Simple PUT with JSON body"
 29    json:
 30      id: "[[int]]"
 31      status: "updated"
 32
 33  patch_request:
 34    method: PATCH
 35    url: "{{host}}/patch"
 36    description: "Simple PATCH with form data"
 37    form:
 38      op: "replace"
 39      path: "/settings"
 40      value: "enabled"
 41
 42  delete_request:
 43    method: DELETE
 44    url: "{{host}}/delete"
 45    description: "Simple DELETE with query parameters"
 46    params:
 47      id: "[[int]]"
 48
 49  # Payloads
 50  json_nested:
 51    method: POST
 52    url: "{{host}}/post"
 53    description: "Nested JSON structure"
 54    json:
 55      user:
 56        profile:
 57          first_name: "[[first_name]]"
 58          last_name: "[[last_name]]"
 59        tags: ["api", "tester", "[[word]]"]
 60      meta:
 61        timestamp: "[[timestamp]]"
 62
 63  form_data:
 64    method: POST
 65    url: "{{host}}/post"
 66    description: "Form encoded data"
 67    form:
 68      username: "[[username]]"
 69      email: "[[email]]"
 70      type: "[[oneof: admin, user, guest]]"
 71
 72  file_upload:
 73    method: POST
 74    url: "{{host}}/post"
 75    description: "Multipart file upload with form fields"
 76    form:
 77      description: "A test image"
 78    files:
 79      image: "test.png"
 80
 81  # Transformations & Generators
 82  faker_generators:
 83    method: POST
 84    url: "{{host}}/post"
 85    description: "Testing various faker generators"
 86    json:
 87      int: "[[int]]"
 88      phone: "[[phone]]"
 89      datetime: "[[datetime]]"
 90      lat: "[[lat]]"
 91      long: "[[long]]"
 92      email: "[[email]]"
 93      ipv4: "[[ipv4]]"
 94      password: "[[password]]"
 95      url: "[[url]]"
 96      uuid: "[[uuid_hyphenated]]"
 97      word: "[[word]]"
 98      sentence: "[[sentence]]"
 99
100  oneof_test:
101    method: POST
102    url: "{{host}}/post"
103    description: "Testing oneof selection"
104    json:
105      choice: "[[oneof: red, green, blue]]"
106      priority: "[[oneof: 1, 2, 3, 4, 5]]"
107
108  # Substitutions & Reuse
109  env_substitution:
110    method: POST
111    url: "{{host}}/post"
112    description: "Testing environment variable substitution"
113    json:
114      system_path: "{{PATH}}"
115      custom_var: "{{HEPI_TEST_VAR}}"
116
117  header_substitution:
118    method: GET
119    url: "{{host}}/headers"
120    description: "Testing header substitution"
121    headers:
122      X-Custom-Env: "{{HEPI_TEST_VAR}}"
123      X-Request-ID: "REQ-[[int]]"
124      X-Auth-Token: "Bearer [[jwt]]"
125
126  result_reuse_simple:
127    method: POST
128    url: "{{host}}/post"
129    description: "Reusing results from get_request and post_request"
130    json:
131      source_get_foo: "{{get_request.args.foo}}"
132      source_post_name: "{{post_request.json.name}}"
133
134  result_reuse_nested:
135    method: POST
136    url: "{{host}}/post"
137    description: "Reusing results from json_nested"
138    json:
139      full_name: "{{json_nested.json.user.profile.first_name}} {{json_nested.json.user.profile.last_name}}"
140      first_tag: "{{json_nested.json.user.tags.0}}"
141
142  # Advanced
143  status_reporting:
144    method: GET
145    url: "{{host}}/status/[[oneof: 200, 201, 400, 401, 404, 500]]"
146    description: "Testing status code reporting"
147
148groups:
149  methods:
150    - get_request
151    - post_request
152    - put_request
153    - patch_request
154    - delete_request
155  payloads:
156    - json_nested
157    - form_data
158    - file_upload
159  generators:
160    - faker_generators
161    - oneof_test
162  substitutions:
163    - env_substitution
164    - header_substitution
165    - result_reuse_simple
166    - result_reuse_nested
167  all:
168    - get_request
169    - post_request
170    - put_request
171    - patch_request
172    - delete_request
173    - json_nested
174    - form_data
175    - file_upload
176    - faker_generators
177    - oneof_test
178    - env_substitution
179    - header_substitution
180    - result_reuse_simple
181    - result_reuse_nested
182    - status_reporting