uri post to avoid duplicate

Hi ,

I have the below uri module to post the details inside the web api

  • name: REST POST Example
    uri:
    url: “{{ webapp_url }}/api/orgs”
    method: POST
    return_content: yes
    body: “{ "name": "{{ project_name }}" }”
    body_format: json
    validate_certs: no
    user: “{{ user }}”
    password: “{{ password }}”
    force_basic_auth: yes

while passing the variables as
ansible-playbook myplay.yml -e “project_name=first_project”
n- number of times it works and overwrites the same first_project name.

Is there an option available to stop overwriting if the same project_name is available with uri module?
Or we have to use the GET method to collect and compare the existing project_name , before writing using POST? or will a conditional check can help ?

  • name: Check if project name exists
    uri:
    url: “{{ webapp_url }}/api/orgs”
    method: GET
    return_content: yes
    validate_certs: no
    user: “{{ user }}”
    password: “{{ password }}”
    force_basic_auth: yes
    register: existing_projects

  • name: Check if project name exists in the response
    set_fact:
    project_already_exists: “{{ project_name in existing_projects.json | json_query(‘*.name’) }}”

  • name: REST POST Example if project name doesn’t exist
    uri:
    url: “{{ webapp_url }}/api/orgs”
    method: POST
    return_content: yes
    body: “{ "name": "{{ project_name }}" }”
    body_format: json
    validate_certs: no
    user: “{{ user }}”
    password: “{{ password }}”
    force_basic_auth: yes
    when: not project_already_exists

Thanks … I am able to achieve it with the above logic and with “assert” module for exiting the playbook if failed .