Skip to content

Commit a0c4fe3

Browse files
chrishoinaanooshapillimalchermdannymgithubhope-fisher
authored
WMS ID 4602 (#628)
* WMS ID 4602 Didn't pickup changes from other branch, so I included here for updates. * WMS ID 11130 updates I'm adding this lab back into Developer. I was working on this locally, but want to include in my repo so I can share with the team. * Updates to lab * updates to lab * updates to new lab * updates to new lab * updates to labs * updates to labs * uppdates to images * manifest doc updates, image updates. * manifest doc updates, image updates. * manifest changes * manifest * lab updates * lab updates * lab updates * manifest updates * workshop updates * workshop updates * workshop updates * workshop updates * workshop updates * workshop updates * workshop updates * workshop updates * r.e. requested changes to labs * WMS ID 4602 This is actually for WMS 4602 and WMS 11130. We changed the manifest documents to include the appropriate "cloud-login" get started files as well as the ocw-help section. * WMS 11130 update object storage link, fixed emojis * WMS 11130 update object storage link, fixed emojis * manifest changes, corrected next in labs * updates to manifest, titles, emojis * fixed manifest files, removed next links * emoji issue, added link to resources * grammarly check * more grammarly updates * removed title from intro * qa updates to lab * updates to images, light edits * ocw213 folders * ocw213 folders * updated manifest * resolved conflicts. resolved conflicts. * updated manifest with additional help section * updated manifest.json with help section * updates to images, text, updated code * corrected manifest.json * updates to ocw lab * updates to ocw labs * updates to rest lab * updates to md * updates to md * added wms id in comments * updates? * intro changes * test * test * additions to workshops * additions to workshops * Update application-oracle-rest-api-walkthrough.md * manifest changes * new dbactions pages * lintchecker * sync * added help email * sync * introduced new lab, changed file names * added sandbox dir * updates to md * md and image updates * changes to master graphics * removed intro copy * removed 2023 ocw references * changes to images, manifest, tasks, steps * removed venv * grammar, spelling * grammar, spelling * grammar, spelling * grammar, spelling * grammar, spelling * grammar, spelling, code index * fixed image * image updates, content changes * added clarifying steps in get-started and images * blurred ocid and compartment details. * updated-images-with-uris-removed * new ocw2025 files new ocw2025 files * new lab manifest and py code * new lab * note alert test * note alert test * space below note * testing breaks * testing breaks * button test * new button test * new new button test * new important alert * testing the note * new note location * testing br * testing br location * Update 2-environment-set-up.md * omitting br * bullets * bullets * unit 2 task 2 completed * footnote testing * testing image in footnote * testing image in footnote * testing image in footnote * testing image in footnote * testing image in footnote * testing image in footnote * testing footnote * changes to manifest.json * changed dir name to sqlcl-mcp * testing note alert * new tasks * testing alerts * note changes * alert change test * alert test * alert testing * alert change * alert test * alert info * alert * alerts testing * alert test * note alert * button colors * html tag correction * tag * tag * tag * tag * testing admonitions * latest lab 2 draft * fixed broken image * update to the intro lab * changed the repo name, and updated the intro md * mermaid test * added mermaid tags to intro * added mermaid tags to intro * added mermaid tags to intro * intro changes * testing admonitions * capital N in note * notes * testing note and para break * notes * note * note * notes * note * warning * warning * first draft for review * note nesting * misspelled labs * removed bullet in prereqs * indentation task 1 step 1 * spelling * new images, and md prompt * changed md file name for lab 5 * added title to lab five md * added tasks to the sub headings. * copy blocks * lab 6 draft * changed title of lab 4 * build a react app * lab 7 updates * removed unecessary files * testing less images * three images * intro draft * intro updates * intro revision * references and acks * testing anchors * href test * footnote test * adding skiplink to anchor * revisions to labs 1, 2 * update * lab 4 updates * notes for object storage, draft prompts for testing * removed images * 9-2 slack feedback from jefe * incorporated new feedback * lab four button * updated prompt sections * updates to md and manifest * lint-checking * removed screenshot files, updated title name in manifest. * updates for ords101 * updates to manifest and folders * new revision * revised manifests * minor image edits, removed unecessary html comments * adjusted skew on image * updated download link to point to LL object storage. * updated the object storage batchload zip file * updated ddl, proc, and L2T3S6 * added notes for production curl bug --------- Co-authored-by: Anoosha Pilli <[email protected]> Co-authored-by: Michelle Malcher <[email protected]> Co-authored-by: Dan Wiliams <[email protected]> Co-authored-by: Hope Fisher <[email protected]>
1 parent 115af98 commit a0c4fe3

File tree

2 files changed

+138
-103
lines changed

2 files changed

+138
-103
lines changed

build-ords-apis-in-adb/1-create-user-and-database-objects/create-user-and-database-objects.md

Lines changed: 127 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -74,106 +74,127 @@ Estimated Lab Time: 20 minutes
7474
<summary style="color: #0000FF";><kbd style="font-size: 10px;">(click) </kbd><strong>Sample prompt</strong></summary>
7575
<p></p>
7676

77-
```sql
78-
<copy>-- ==========================================
79-
-- CREATE TABLES
80-
-- ==========================================
81-
CREATE TABLE DEPARTMENT (
82-
DEPT_ID NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
83-
DEPT_CODE VARCHAR(5) NOT NULL,
84-
ESTABLISHED DATE,
85-
DETAILS JSON
86-
);
87-
88-
CREATE TABLE EMPLOYEE (
89-
EMP_ID NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
90-
EMP_NAME VARCHAR2(100) NOT NULL,
91-
DEPT_ID NUMBER NOT NULL,
92-
COMMENTS CLOB,
93-
CONSTRAINT FK_EMPLOYEE_DEPT FOREIGN KEY (DEPT_ID)
94-
REFERENCES DEPARTMENT (DEPT_ID)
95-
);
77+
```sql
78+
<copy>-- ==========================================
79+
-- CREATE TABLES
80+
-- ==========================================
81+
82+
-- DEPARTMENT table
83+
84+
CREATE TABLE DEPARTMENT (
85+
DEPT_ID NUMBER GENERATED BY DEFAULT AS IDENTITY
86+
CONSTRAINT DEPT_ID_PK PRIMARY KEY,
87+
DEPT_CODE VARCHAR2(5) CONSTRAINT DEPT_CODE_NN NOT NULL,
88+
ESTABLISHED DATE,
89+
DETAILS JSON
90+
);
91+
92+
CREATE UNIQUE INDEX DEPT_CODE_UK ON DEPARTMENT (DEPT_CODE);
93+
94+
-- EMPLOYEE table
95+
96+
CREATE TABLE EMPLOYEE (
97+
EMP_ID NUMBER GENERATED BY DEFAULT AS IDENTITY
98+
CONSTRAINT EMP_ID_PK PRIMARY KEY,
99+
EMP_NAME VARCHAR2(100) CONSTRAINT EMP_NAME_NN NOT NULL,
100+
DEPT_ID NUMBER CONSTRAINT EMP_DEPT_ID_NN NOT NULL,
101+
COMMENTS CLOB,
102+
CONSTRAINT FK_EMPLOYEE_DEPT FOREIGN KEY (DEPT_ID)
103+
REFERENCES DEPARTMENT (DEPT_ID)
104+
);
105+
106+
CREATE INDEX EMP_DEPARTMENT_IX ON EMPLOYEE (DEPT_ID);
107+
108+
-- PROJECT table
96109

97110
CREATE TABLE PROJECT (
98-
PROJ_ID NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
99-
PROJ_NAME VARCHAR2(100) NOT NULL,
100-
DEPT_ID NUMBER NOT NULL,
101-
IS_ACTIVE BOOLEAN,
102-
CONSTRAINT FK_PROJECT_DEPT FOREIGN KEY (DEPT_ID)
103-
REFERENCES DEPARTMENT (DEPT_ID)
111+
PROJ_ID NUMBER GENERATED BY DEFAULT AS IDENTITY
112+
CONSTRAINT PROJ_ID_PK PRIMARY KEY,
113+
PROJ_NAME VARCHAR2(100) CONSTRAINT PROJ_NAME_NN NOT NULL,
114+
DEPT_ID NUMBER CONSTRAINT PROJ_DEPT_ID_NN NOT NULL,
115+
IS_ACTIVE BOOLEAN,
116+
CONSTRAINT FK_PROJECT_DEPT FOREIGN KEY (DEPT_ID)
117+
REFERENCES DEPARTMENT (DEPT_ID)
104118
);
105119

106-
-- ==========================================
120+
CREATE INDEX PROJ_DEPARTMENT_IX ON PROJECT (DEPT_ID);
121+
122+
-- ==========================================
107123
-- INSERT DATA
108-
-- ==========================================
109-
INSERT INTO DEPARTMENT (DEPT_CODE, ESTABLISHED, DETAILS) VALUES
110-
('HR001', DATE '2001-04-13', JSON_OBJECT('location' VALUE 'Bldg 1', 'members' VALUE 25)),
111-
('FN002', DATE '2002-06-20', JSON_OBJECT('location' VALUE 'Bldg 2', 'members' VALUE 20)),
112-
('EN003', DATE '2000-11-01', JSON_OBJECT('location' VALUE 'Bldg 3', 'members' VALUE 40)),
113-
('SA004', DATE '2005-01-15', JSON_OBJECT('location' VALUE 'Bldg 4', 'members' VALUE 18)),
114-
('MK005', DATE '2003-12-07', JSON_OBJECT('location' VALUE 'Bldg 5', 'members' VALUE 15)),
115-
('LG006', DATE '2010-03-31', JSON_OBJECT('location' VALUE 'Bldg 6', 'members' VALUE 5)),
116-
('IT007', DATE '2001-09-23', JSON_OBJECT('location' VALUE 'Bldg 7', 'members' VALUE 30)),
117-
('SP008', DATE '2015-05-05', JSON_OBJECT('location' VALUE 'Bldg 8', 'members' VALUE 12)),
118-
('LG009', DATE '2012-07-14', JSON_OBJECT('location' VALUE 'Bldg 9', 'members' VALUE 10)),
119-
('OP010', DATE '2008-08-01', JSON_OBJECT('location' VALUE 'Bldg 10', 'members' VALUE 22));
120-
121-
INSERT INTO PROJECT (PROJ_NAME, DEPT_ID, IS_ACTIVE) VALUES
122-
('Onboarding', 1, TRUE),
123-
('Audit2024', 2, FALSE),
124-
('NewApp', 3, TRUE),
125-
('SalesCampaign', 4, TRUE),
126-
('SocialMediaPush', 5, FALSE),
127-
('Compliance', 6, TRUE),
128-
('UpgradeInfra', 7, TRUE),
129-
('HelpdeskRevamp', 8, TRUE),
130-
('FleetUpdate', 9, TRUE),
131-
('ProcessReorg', 10, FALSE);
132-
133-
INSERT INTO EMPLOYEE (EMP_NAME, DEPT_ID, COMMENTS) VALUES
134-
('Alice', 1, 'Strong analyst, quick learner.'),
135-
('Bob', 2, 'CPA certification in progress.'),
136-
('Carol', 3, 'Dev team lead for NewApp project.'),
137-
('David', 4, 'Consistent sales over target.'),
138-
('Eve', 5, 'Leads digital campaigns.'),
139-
('Frank', 6, 'Subject matter expert in compliance.'),
140-
('Grace', 7, 'Skilled in infrastructure upgrades.'),
141-
('Heidi', 8, 'Customer support supervisor.'),
142-
('Ivan', 9, 'Fleet manager - long tenure.'),
143-
('Judy', 10, 'Operations management veteran.');
144-
145-
-- ==========================================
146-
-- PROCEDURE: PR_ADD_AND_ASSIGN_EMPLOYEE
147-
-- ==========================================
148-
CREATE OR REPLACE PROCEDURE PR_ADD_AND_ASSIGN_EMPLOYEE (
149-
p_emp_name IN VARCHAR2, -- Name of the new employee
150-
p_dept_code IN VARCHAR, -- Department code to assign the employee to
151-
p_comments IN CLOB -- Comments about the employee
152-
) AS
153-
v_dept_id NUMBER; -- Variable to hold the found department ID
154-
BEGIN
155-
-- Attempt to look up the department's ID based on the provided department code
156-
SELECT dept_id INTO v_dept_id
157-
FROM DEPARTMENT
158-
WHERE dept_code = p_dept_code;
159-
160-
-- If a matching department was found, insert the new employee record
161-
INSERT INTO EMPLOYEE (emp_name, dept_id, comments)
162-
VALUES (p_emp_name, v_dept_id, p_comments);
163-
164-
EXCEPTION
165-
-- This block runs if no department matches the given code
166-
WHEN NO_DATA_FOUND THEN
167-
DBMS_OUTPUT.put_line('Department code not found.');
168-
169-
END;
170-
171-
COMMIT;
172-
/
124+
-- ==========================================
125+
INSERT INTO DEPARTMENT (DEPT_CODE, ESTABLISHED, DETAILS) VALUES
126+
('HR001', DATE '2001-04-13', JSON_OBJECT('location' VALUE 'Bldg 1', 'members' VALUE 25)),
127+
('FN002', DATE '2002-06-20', JSON_OBJECT('location' VALUE 'Bldg 2', 'members' VALUE 20)),
128+
('EN003', DATE '2000-11-01', JSON_OBJECT('location' VALUE 'Bldg 3', 'members' VALUE 40)),
129+
('SA004', DATE '2005-01-15', JSON_OBJECT('location' VALUE 'Bldg 4', 'members' VALUE 18)),
130+
('MK005', DATE '2003-12-07', JSON_OBJECT('location' VALUE 'Bldg 5', 'members' VALUE 15)),
131+
('LG006', DATE '2010-03-31', JSON_OBJECT('location' VALUE 'Bldg 6', 'members' VALUE 5)),
132+
('IT007', DATE '2001-09-23', JSON_OBJECT('location' VALUE 'Bldg 7', 'members' VALUE 30)),
133+
('SP008', DATE '2015-05-05', JSON_OBJECT('location' VALUE 'Bldg 8', 'members' VALUE 12)),
134+
('LG009', DATE '2012-07-14', JSON_OBJECT('location' VALUE 'Bldg 9', 'members' VALUE 10)),
135+
('OP010', DATE '2008-08-01', JSON_OBJECT('location' VALUE 'Bldg 10', 'members' VALUE 22));
136+
137+
INSERT INTO PROJECT (PROJ_NAME, DEPT_ID, IS_ACTIVE) VALUES
138+
('Onboarding', 1, TRUE),
139+
('Audit2024', 2, FALSE),
140+
('NewApp', 3, TRUE),
141+
('SalesCampaign', 4, TRUE),
142+
('SocialMediaPush', 5, FALSE),
143+
('Compliance', 6, TRUE),
144+
('UpgradeInfra', 7, TRUE),
145+
('HelpdeskRevamp', 8, TRUE),
146+
('FleetUpdate', 9, TRUE),
147+
('ProcessReorg', 10, FALSE);
148+
149+
INSERT INTO EMPLOYEE (EMP_NAME, DEPT_ID, COMMENTS) VALUES
150+
('Alice', 1, 'Strong analyst, quick learner.'),
151+
('Bob', 2, 'CPA certification in progress.'),
152+
('Carol', 3, 'Dev team lead for NewApp project.'),
153+
('David', 4, 'Consistent sales over target.'),
154+
('Eve', 5, 'Leads digital campaigns.'),
155+
('Frank', 6, 'Subject matter expert in compliance.'),
156+
('Grace', 7, 'Skilled in infrastructure upgrades.'),
157+
('Heidi', 8, 'Customer support supervisor.'),
158+
('Ivan', 9, 'Fleet manager - long tenure.'),
159+
('Judy', 10, 'Operations management veteran.');
160+
161+
-- ==========================================
162+
-- PROCEDURE: PR_ADD_AND_ASSIGN_EMPLOYEE
163+
-- ==========================================
164+
CREATE OR REPLACE PROCEDURE ORDS101.PR_ADD_AND_ASSIGN_EMPLOYEE (
165+
p_emp_name IN VARCHAR2, -- Employee's name to be inserted
166+
p_dept_code IN VARCHAR2, -- Department code (case-insensitive search)
167+
p_comments IN CLOB -- Additional textual comments about the employee
168+
) AS
169+
v_dept_id NUMBER; -- Variable to store the department ID once found
170+
BEGIN
171+
172+
SELECT dept_id INTO v_dept_id
173+
FROM DEPARTMENT
174+
WHERE UPPER(dept_code) = UPPER(p_dept_code);
175+
176+
177+
INSERT INTO EMPLOYEE (emp_name, dept_id, comments)
178+
VALUES (p_emp_name, v_dept_id, p_comments);
179+
180+
181+
EXCEPTION
182+
183+
WHEN NO_DATA_FOUND THEN
184+
DBMS_OUTPUT.put_line(
185+
'Department code (DEPT_CODE) not found. Please use one of the following:' ||
186+
' EN003, FN002, HR001, IT007, LG006, LG009, MK005, OP010, SA004, SP008 '
187+
);
188+
189+
WHEN OTHERS THEN
190+
DBMS_OUTPUT.put_line('Error: ' || SQLERRM);
191+
192+
END;
193+
/
173194

174195
</copy>
175196

176-
```
197+
```
177198

178199
</details>
179200
<p></p>
@@ -255,15 +276,26 @@ Estimated Lab Time: 20 minutes
255276
256277
![Unedited batchload curl command](./images-new/24-unedited-batchload-curl-command.png " ")
257278
258-
2. Retrieve the sample payload via [this link](https://c4u04.objectstorage.us-ashburn-1.oci.customer-oci.com/p/EcTjWk2IuZPZeNnD_fYMcgUhdNDIDA6rt9gaFj_WZMiL7VvxPBNMY60837hu5hga/n/c4u04/b/livelabsfiles/o/developer-library/batchload_directory.zip) that you'll use for testing this`BATCH LOAD` endpoint. Unzip the .zip file if this did not occur automatically.
279+
2. Retrieve the sample payload via [this link](https://c4u04.objectstorage.us-ashburn-1.oci.customer-oci.com/p/EcTjWk2IuZPZeNnD_fYMcgUhdNDIDA6rt9gaFj_WZMiL7VvxPBNMY60837hu5hga/n/c4u04/b/livelabsfiles/o/developer-library/batchload_directory.zip) that you'll use for testing this `BATCH LOAD` endpoint. Unzip the .zip file if this did not occur automatically.
259280

260281
3. Once downloaded, copy the filepath details to use in the `--data-binary` option of the cURL command. In this example, the .csv file is located at: `/Users/me/Downloads/project_batchload.csv`.
261282

283+
> **IMPORTANT:** Your Command Prompt or Power Shell sample cURL Command may default to `-d` `--data` instead of `--data-binary`. Windows users should use a cURL command as seen in this example:
284+
285+
```shell
286+
<copy>
287+
curl -v -X POST ^
288+
-H "Content-Type: text/csv" ^
289+
"https://my-ocid-db-name.adb.my-region-1.oraclecloudapps.com/ords/ords101/project/batchload" ^
290+
--data-binary "@\Users\me\Downloads\project_batchload.csv"
291+
</copy>
292+
```
293+
262294
4. In your text editor replace `<CONTENT_TYPE>` with `text/csv` and `--data-binary @<FILE_NAME>` with your own file path. Optionally you may include other cURL options like those in the example.
263295

264296
![Edited batchload curl command](./images-new/25-batchload-curl-command-with-edits.png " ")
265297

266-
> **NOTE:** Your `BATCHLOAD` URI will differ as well.
298+
> **NOTE:** Your `BATCHLOAD` URI will differ as well. File paths for macOS/Linux and Windows differ; double check your complete cURL command.
267299

268300
5. Execute the `BATCH LOAD` request. After a few moments the results of the operation will appear in your terminal.
269301

@@ -286,4 +318,4 @@ You may now [proceed to the next lab](#next).
286318
287319
### Last Updated By/Date
288320
289-
- Chris Hoina, September 2025
321+
- Chris Hoina, October 2025

build-ords-apis-in-adb/2-build-ords-apis/build-ords-apis.md

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ Estimated Lab Time: 25 minutes
125125
126126
- **Module Name:** `records.module`
127127
- **Base Path:** `v1`
128+
- **Protected By Privilege:** `Not Protected` (Select from drop-down)
128129
- **Comments:** `An employee records management module consisting of various templates and handlers for performing operations on the following target tables: Department, Project, Employee.`
129130
130131
![create-new-resource-module](./images-new/18-create-new-resource-module.png " ")
@@ -163,41 +164,43 @@ Estimated Lab Time: 25 minutes
163164
```
164165
> **NOTE:** Notice how the the values for the Route Pattern are included in the Handler's source code.
165166
166-
5. You have just created your first ORDS API, a `GET` handler. Click the Open in new Tab button, you'll be prompted to enter in values for the Route Parameters. ORDS will bind these values of the URI to those in the Handler's SQL source code, satisfying the conditions of the `WHERE` clause. Select a `dept_id` between 1 and 10, and either true/false for the `is_active` parameter. Select **OK**.
167+
5. You have just created your first ORDS API, a `GET` handler. Click the Open in new Tab button, you'll be prompted to enter in values for the Route Parameters. ORDS will bind these values of the URI to those in the Handler's SQL source code, satisfying the conditions of the `WHERE` clause.
167168
168169
![Adding details to the handler code](./images-new/23-finished-handler-code.png " ")
169170
171+
6. Enter a value between `1` and `10` for `dept_id`, and use either `true` or `false` (`BOOLEAN`) for the `is_active` parameter. Then, select **OK**.
172+
170173
![Pressing OK for a new tab](./images-new/24-enter-substitution-pressing-enter.png " ")
171174
172-
6. A new browser tab will appear, with the results of your `GET` request. You can review the Response in the Object Tree format using your browser's developer/inspect tools. Notice the `links:Array` property; specifically the `self` link. Also, notice the URI includes those parameters you selected in the previous step (the same parameters that ORDS uses in the Handler source code).
175+
7. A new browser tab will appear, with the results of your `GET` request. You can review the Response in the Object Tree format using your browser's developer/inspect tools. Notice the `links:Array` property; specifically the `self` link. Also, notice the URI includes those parameters you selected in the previous step (the same parameters that ORDS uses in the Handler source code).
173176

174177
![GET results in the browser](./images-new/25-new-browser-window-sql-get-results.png " ")
175178

176-
7. When you are ready, return the the Handler dashboard. You can test this API in cURL too. Click the kebab menu of your Handler, and select **Get cURL command**.
179+
8. When you are ready, return the the Handler dashboard. You can test this API in cURL too. Click the kebab menu of your Handler, and select **Get cURL command**.
177180

178181
![curl-command-test](./images-new/26-curl-command-test.png " ")
179182

180-
8. Press the **+ plus** button, and enter in Substitution values for the cURL command (you can use the same ones as before). Then press **OK**.
183+
9. Press the **+ plus** button, and enter in Substitution values for the cURL command (you can use the same ones as before). Then press **OK**.
181184

182185
![Press plus for substitution values](./images-new/27-press-plus-button-get.png " ")
183186

184187
![Press OK for substitution values](./images-new/28-new-values-before-press-ok.png " ")
185188

186-
9. Copy the cURL command, and paste it into a new Terminal window. You'll notice how your values have been appended to the URI of your ORDS API. Press **Enter** to execute the cURL command.
189+
10. Copy the cURL command, and paste it into a new Terminal window. You'll notice how your values have been appended to the URI of your ORDS API. Press **Enter** to execute the cURL command.
187190
188191
![Copying the curl command](./images-new/29-copying-the-curl-command-for-get.png " ")
189192
190193
![curl command in terminal](./images-new/30-curl-command-in-terminal.png " ")
191194
192195
> **NOTE:** You can optionally pipe in the `jq` processer to pretty print your `JSON` response.
193196
194-
10. You should see the response payload in your terminal. Scroll down, and you will see the rest of the payload. Because this is a large results set, you'll see a `next` link in the `links` array (unlike what you observed in the AutoREST lab).
197+
11. You should see the response payload in your terminal. Scroll down, and you will see the rest of the payload. Because this is a large results set, you'll see a `next` link in the `links` array (unlike what you observed in the AutoREST lab).
195198

196199
![Get response part one](./images-new/31-get-response-one.png " ")
197200

198201
![Get response part two](./images-new/32-get-response-two.png " ")
199202

200-
11. In the next task you'll create a slightly more advanced `POST` endpoint.
203+
12. In the next task you'll create a slightly more advanced `POST` endpoint.
201204
202205
## Task 4: Building an ORDS POST API
203206
@@ -298,4 +301,4 @@ You may now [proceed to the next lab](#next).
298301

299302
### Last Updated By/Date
300303

301-
- Chris Hoina, September 2025
304+
- Chris Hoina, October 2025

0 commit comments

Comments
 (0)