diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml
index d420c216d41e09620984deaa6ee9dc3bacdebe1a..6bb019da18a695ce9aaa28f48b36c5451eff408f 100644
--- a/ansible/roles/kong-api/defaults/main.yml
+++ b/ansible/roles/kong-api/defaults/main.yml
@@ -6547,7 +6547,7 @@ kong_apis:
         config.limit_by: credential
       - name: request-size-limiting
         config.allowed_payload_size: "{{ medium_request_size_limit }}"
-      
+
   - name: questionBulkUpload
     request_path: "{{ question_prefix }}/v1/bulkUpload"
     upstream_url: "{{ program_service_url }}/question/v1/bulkUpload"
@@ -7107,7 +7107,6 @@ kong_apis:
       - name: request-size-limiting
         config.allowed_payload_size: "{{ small_request_size_limit }}"
 
-
   - name: acceptCollectionFlag
     request_path: "{{ collection_prefix }}/v1/flag/accept"
     upstream_url: "{{ content_service_url }}/collection/v4/flag/accept"
@@ -7124,4 +7123,58 @@ kong_apis:
         config.hour: "{{ medium_rate_limit_per_hour }}"
         config.limit_by: credential
       - name: request-size-limiting
-        config.allowed_payload_size: "{{ small_request_size_limit }}"
\ No newline at end of file
+        config.allowed_payload_size: "{{ small_request_size_limit }}"
+
+  - name: createForm
+    request_path: "{{ program_service_prefix }}/v1/form/create"
+    upstream_url: "{{ program_service_url }}/program/v1/form/create"
+    strip_request_path: true
+    plugins:
+      - name: jwt
+      - name: cors
+      - "{{ statsd_pulgin }}"
+      - name: acl
+        config.whitelist:
+          - 'appAdmin'
+      - name: rate-limiting
+        config.policy: local
+        config.hour: "{{ medium_rate_limit_per_hour }}"
+        config.limit_by: credential
+      - name: request-size-limiting
+        config.allowed_payload_size: "{{ small_request_size_limit }}"
+
+  - name: updateForm
+    request_path: "{{ program_service_prefix }}/v1/form/update"
+    upstream_url: "{{ program_service_url }}/program/v1/form/update"
+    strip_request_path: true
+    plugins:
+      - name: jwt
+      - name: cors
+      - "{{ statsd_pulgin }}"
+      - name: acl
+        config.whitelist:
+          - 'appAdmin'
+      - name: rate-limiting
+        config.policy: local
+        config.hour: "{{ medium_rate_limit_per_hour }}"
+        config.limit_by: credential
+      - name: request-size-limiting
+        config.allowed_payload_size: "{{ small_request_size_limit }}"
+
+  - name: readForm
+    request_path: "{{ program_service_prefix }}/v1/form/read"
+    upstream_url: "{{ program_service_url }}/program/v1/form/read"
+    strip_request_path: true
+    plugins:
+      - name: jwt
+      - name: cors
+      - "{{ statsd_pulgin }}"
+      - name: acl
+        config.whitelist:
+          - 'programAccess'
+      - name: rate-limiting
+        config.policy: local
+        config.hour: "{{ medium_rate_limit_per_hour }}"
+        config.limit_by: credential
+      - name: request-size-limiting
+        config.allowed_payload_size: "{{ small_request_size_limit }}"
diff --git a/ansible/roles/kong-consumer/defaults/main.yml b/ansible/roles/kong-consumer/defaults/main.yml
index 4eed3e40881a7494f4691b56635d5093c823a380..7e6f307db18a24480aa1328b783b4ec88e6eb0ae 100644
--- a/ansible/roles/kong-consumer/defaults/main.yml
+++ b/ansible/roles/kong-consumer/defaults/main.yml
@@ -84,6 +84,13 @@ kong_all_consumer_groups:
   - druidReportAdmin
   - dataCreate
   - frameworkAccess
+  - programCreate
+  - programUpdate
+  - programAdmin
+  - programAccess
+  - nominationCreate
+  - nominationUpdate
+  - nominationAdmin
 
 kong_consumers:
   - username: api-admin