Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
345 commits
Select commit Hold shift + click to select a range
707e852
grammarly check
chrishoina Sep 20, 2022
55f873d
Merge remote-tracking branch 'upstream/main'
chrishoina Sep 20, 2022
8c579c2
more grammarly updates
chrishoina Sep 20, 2022
0fb486d
removed title from intro
chrishoina Sep 26, 2022
86a3aba
Merge remote-tracking branch 'upstream/main'
chrishoina Sep 26, 2022
7139844
Merge branch 'oracle-livelabs:main' into main
chrishoina Mar 20, 2023
5804047
qa updates to lab
chrishoina Mar 21, 2023
bcb1af1
updates to images, light edits
chrishoina Mar 23, 2023
d5bfb34
Merge branch 'oracle-livelabs:main' into main
chrishoina Mar 23, 2023
65bd909
Merge branch 'main' of https://github.com/chrishoina/developer
chrishoina Mar 23, 2023
d8c1725
Merge branch 'oracle-livelabs:main' into main
chrishoina May 1, 2023
2c46d60
ocw213 folders
chrishoina May 1, 2023
1316050
ocw213 folders
chrishoina May 2, 2023
8e3a35b
updated manifest
chrishoina Jul 17, 2023
1adb0ee
resolved conflicts.
chrishoina Jul 24, 2023
1cefbbf
Merge branch 'main' into main
chrishoina Jul 24, 2023
50d3af6
updated manifest with additional help section
chrishoina Aug 3, 2023
bb8a517
updated manifest.json with help section
chrishoina Aug 3, 2023
64f0e36
Merge branch 'main' into main
chrishoina Aug 3, 2023
f9beb6e
updates to images, text, updated code
chrishoina Aug 18, 2023
a868327
Merge branch 'main' into main
chrishoina Aug 18, 2023
8fd68b2
Merge branch 'main' into main
anooshapilli Aug 18, 2023
1477d19
corrected manifest.json
chrishoina Aug 22, 2023
63dc949
updates to ocw lab
chrishoina Sep 8, 2023
b1bd4da
updates to ocw labs
chrishoina Sep 11, 2023
ea88a26
updates to rest lab
chrishoina Sep 11, 2023
0d23ef3
updates to md
chrishoina Sep 14, 2023
b8a845d
updates to md
chrishoina Sep 14, 2023
b131168
added wms id in comments
chrishoina Sep 14, 2023
995d85a
Merge branch 'main' into main
malcherm Sep 14, 2023
937e5db
Merge branch 'oracle-livelabs:main' into main
chrishoina Sep 18, 2023
220f404
Merge branch 'oracle-livelabs:main' into main
chrishoina Dec 14, 2023
48dcb90
updates?
chrishoina Dec 14, 2023
bcdc438
intro changes
chrishoina Jan 22, 2024
20afb5f
test
chrishoina Jan 22, 2024
3789941
test
chrishoina Jan 22, 2024
954d817
additions to workshops
chrishoina Feb 14, 2024
e683807
additions to workshops
chrishoina Feb 14, 2024
86febe6
Update application-oracle-rest-api-walkthrough.md
dannymgithub Feb 15, 2024
3d74b64
Merge branch 'oracle-livelabs:main' into main
chrishoina Feb 26, 2024
4b61761
manifest changes
chrishoina Feb 26, 2024
53a838f
Merge branch 'main' of github.com:chrishoina/developer
chrishoina Feb 26, 2024
890674a
new dbactions pages
chrishoina May 22, 2024
37049f8
lintchecker
chrishoina May 30, 2024
ac530b3
Merge branch 'main' into main
chrishoina Jun 6, 2024
7f895d6
sync
chrishoina Aug 13, 2024
574b21a
added help email
chrishoina Aug 13, 2024
32fcdff
sync
chrishoina Aug 13, 2024
204439a
Merge branch 'main' into main
chrishoina Aug 14, 2024
6060986
introduced new lab, changed file names
chrishoina Aug 14, 2024
1262290
Merge branch 'main' of github.com:chrishoina/developer
chrishoina Aug 14, 2024
b2c4b25
added sandbox dir
chrishoina Aug 14, 2024
0f96d85
updates to md
chrishoina Aug 14, 2024
60693b3
md and image updates
chrishoina Aug 15, 2024
fc04ccd
changes to master graphics
chrishoina Aug 15, 2024
d7f7243
Merge branch 'main' into main
chrishoina Aug 15, 2024
b8ed092
removed intro copy
chrishoina Aug 15, 2024
38afa3f
removed 2023 ocw references
chrishoina Aug 19, 2024
eaba210
changes to images, manifest, tasks, steps
chrishoina Aug 21, 2024
672b9d8
removed venv
chrishoina Aug 21, 2024
fa405e5
grammar, spelling
chrishoina Aug 21, 2024
c6f7dcf
grammar, spelling
chrishoina Aug 21, 2024
5cbbc63
grammar, spelling
chrishoina Aug 21, 2024
483bebb
grammar, spelling
chrishoina Aug 21, 2024
4204a9b
grammar, spelling
chrishoina Aug 21, 2024
5ccc2f3
grammar, spelling, code index
chrishoina Aug 21, 2024
a785e71
Merge branch 'oracle-livelabs:main' into main
chrishoina Aug 21, 2024
8308049
fixed image
chrishoina Aug 21, 2024
2a154fb
Merge branch 'main' of github.com:chrishoina/developer
chrishoina Aug 21, 2024
7d16e51
Merge remote-tracking branch 'upstream/main'
chrishoina Aug 21, 2024
90241b5
image updates, content changes
chrishoina Aug 21, 2024
46d68a0
Merge branch 'oracle-livelabs:main' into main
chrishoina Aug 23, 2024
8f78e7c
added clarifying steps in get-started and images
chrishoina Aug 23, 2024
962f6b9
Merge branch 'main' into main
hope-fisher Aug 24, 2024
177835c
blurred ocid and compartment details.
chrishoina Aug 24, 2024
d6308de
updated-images-with-uris-removed
chrishoina Aug 24, 2024
8d57ef2
Merge branch 'oracle-livelabs:main' into main
chrishoina Jul 23, 2025
a9894aa
new ocw2025 files
chrishoina Jul 23, 2025
9bafb26
Merge branch 'main' of https://github.com/chrishoina/developer
chrishoina Jul 23, 2025
e5a864a
new lab manifest and py code
chrishoina Jul 24, 2025
e925e39
new lab
chrishoina Aug 2, 2025
dc535fb
note alert test
chrishoina Aug 2, 2025
7ba5784
note alert test
chrishoina Aug 2, 2025
4dae0b3
space below note
chrishoina Aug 2, 2025
1e8be3a
testing breaks
chrishoina Aug 2, 2025
f293406
testing breaks
chrishoina Aug 2, 2025
b9c508f
button test
chrishoina Aug 2, 2025
4e343da
new button test
chrishoina Aug 2, 2025
0062196
new
chrishoina Aug 2, 2025
6dd859a
new important alert
chrishoina Aug 2, 2025
243806d
testing the note
chrishoina Aug 2, 2025
2120288
new note location
chrishoina Aug 2, 2025
f414496
testing br
chrishoina Aug 2, 2025
e71989c
testing br location
chrishoina Aug 2, 2025
c19d309
Update 2-environment-set-up.md
chrishoina Aug 2, 2025
7d7aeea
omitting br
chrishoina Aug 2, 2025
faa071b
bullets
chrishoina Aug 2, 2025
61285c1
bullets
chrishoina Aug 2, 2025
d75b93e
unit 2 task 2 completed
chrishoina Aug 2, 2025
d3c748c
footnote testing
chrishoina Aug 2, 2025
28a4909
testing image in footnote
chrishoina Aug 2, 2025
bff7be2
testing image in footnote
chrishoina Aug 2, 2025
2fe95ed
testing image in footnote
chrishoina Aug 2, 2025
48f02eb
testing image in footnote
chrishoina Aug 2, 2025
e0e7c36
testing image in footnote
chrishoina Aug 2, 2025
e47f59f
testing image in footnote
chrishoina Aug 2, 2025
2e67968
testing footnote
chrishoina Aug 3, 2025
8753bd1
changes to manifest.json
chrishoina Aug 3, 2025
c8d848b
changed dir name to sqlcl-mcp
chrishoina Aug 3, 2025
a3fe4ab
testing note alert
chrishoina Aug 3, 2025
47a62b5
new tasks
chrishoina Aug 4, 2025
fd154e5
testing alerts
chrishoina Aug 4, 2025
06698e0
note changes
chrishoina Aug 4, 2025
ebdd049
alert change test
chrishoina Aug 4, 2025
94a6068
alert test
chrishoina Aug 4, 2025
bb0e6cd
alert testing
chrishoina Aug 4, 2025
c9959f5
alert change
chrishoina Aug 4, 2025
25ce687
alert test
chrishoina Aug 4, 2025
bde3f8b
alert info
chrishoina Aug 4, 2025
a82bec4
alert
chrishoina Aug 4, 2025
8a5617e
alerts testing
chrishoina Aug 4, 2025
9d84c2d
alert test
chrishoina Aug 4, 2025
fde5755
note alert
chrishoina Aug 4, 2025
a19439d
button colors
chrishoina Aug 4, 2025
61f96d8
html tag correction
chrishoina Aug 4, 2025
c629c4a
tag
chrishoina Aug 4, 2025
6e633c1
tag
chrishoina Aug 4, 2025
fd33b03
tag
chrishoina Aug 4, 2025
499104a
tag
chrishoina Aug 4, 2025
12f0a36
testing admonitions
chrishoina Aug 4, 2025
9da1eeb
latest lab 2 draft
chrishoina Aug 4, 2025
c38e275
fixed broken image
chrishoina Aug 4, 2025
fe84e99
update to the intro lab
chrishoina Aug 13, 2025
70e3d81
changed the repo name, and updated the intro md
chrishoina Aug 14, 2025
f282344
mermaid test
chrishoina Aug 14, 2025
c8e33c8
added mermaid tags to intro
chrishoina Aug 14, 2025
774b5cf
added mermaid tags to intro
chrishoina Aug 14, 2025
7a514d2
added mermaid tags to intro
chrishoina Aug 14, 2025
88b7388
intro changes
chrishoina Aug 14, 2025
6e18421
testing admonitions
chrishoina Aug 18, 2025
8143bf4
capital N in note
chrishoina Aug 18, 2025
8eea585
notes
chrishoina Aug 18, 2025
2a0b952
testing note and para break
chrishoina Aug 18, 2025
8645d1a
notes
chrishoina Aug 18, 2025
d9de5fc
note
chrishoina Aug 18, 2025
f0cae2e
note
chrishoina Aug 18, 2025
2d7eb7f
notes
chrishoina Aug 18, 2025
fc44b55
note
chrishoina Aug 18, 2025
88354fb
warning
chrishoina Aug 18, 2025
011db8c
warning
chrishoina Aug 18, 2025
681cd74
first draft for review
chrishoina Aug 18, 2025
3b83482
note nesting
chrishoina Aug 18, 2025
0feae8a
misspelled labs
chrishoina Aug 18, 2025
f980aad
removed bullet in prereqs
chrishoina Aug 18, 2025
1ab9409
indentation task 1 step 1
chrishoina Aug 18, 2025
8710fd7
spelling
chrishoina Aug 18, 2025
3fdfac5
new images, and md prompt
chrishoina Aug 26, 2025
e271d10
changed md file name for lab 5
chrishoina Aug 26, 2025
bc80a5c
added title to lab five md
chrishoina Aug 26, 2025
b7133e9
added tasks to the sub headings.
chrishoina Aug 26, 2025
c17a02e
copy blocks
chrishoina Aug 27, 2025
41722fb
lab 6 draft
chrishoina Aug 27, 2025
c812888
changed title of lab 4
chrishoina Aug 27, 2025
6fab024
build a react app
chrishoina Aug 28, 2025
78a714f
lab 7 updates
chrishoina Aug 28, 2025
ea7b05b
removed unecessary files
chrishoina Aug 28, 2025
c36b1bc
testing less images
chrishoina Aug 28, 2025
88a23c3
three images
chrishoina Aug 28, 2025
0dd8743
intro draft
chrishoina Aug 29, 2025
348f142
intro updates
chrishoina Aug 29, 2025
bc3a8b9
intro revision
chrishoina Aug 29, 2025
64b5636
references and acks
chrishoina Aug 30, 2025
bfac072
testing anchors
chrishoina Aug 30, 2025
193d98c
href test
chrishoina Aug 30, 2025
4105141
footnote test
chrishoina Aug 30, 2025
b3cc27b
adding skiplink to anchor
chrishoina Aug 30, 2025
6fc9d81
revisions to labs 1, 2
chrishoina Aug 30, 2025
ac19aa8
update
chrishoina Aug 30, 2025
48e9c79
lab 4 updates
chrishoina Sep 1, 2025
88a3b4b
notes for object storage, draft prompts for testing
chrishoina Sep 1, 2025
be9312c
removed images
chrishoina Sep 1, 2025
ec0bc12
9-2 slack feedback from jefe
chrishoina Sep 2, 2025
1135188
incorporated new feedback
chrishoina Sep 3, 2025
7aa5cd3
lab four button
chrishoina Sep 3, 2025
bf0b447
updated prompt sections
chrishoina Sep 4, 2025
b440ee9
updates to md and manifest
chrishoina Sep 8, 2025
3a6e4d0
lint-checking
chrishoina Sep 11, 2025
75484bf
Merge remote-tracking branch 'upstream/main'
chrishoina Sep 11, 2025
cd9d999
removed screenshot files, updated title name in manifest.
chrishoina Sep 11, 2025
f7b0373
updates for ords101
chrishoina Sep 26, 2025
46b397e
updates to manifest and folders
chrishoina Sep 26, 2025
2e72a2d
new revision
chrishoina Sep 26, 2025
cf8591e
revised manifests
chrishoina Sep 26, 2025
0b50fc9
minor image edits, removed unecessary html comments
chrishoina Sep 26, 2025
e8f22fd
Merge branch 'main' into main
chrishoina Sep 29, 2025
752a0ef
adjusted skew on image
chrishoina Sep 30, 2025
e85d31d
Merge branch 'main' into main
chrishoina Sep 30, 2025
b44c860
updated download link to point to LL object storage.
chrishoina Oct 2, 2025
c90dda7
updated the object storage batchload zip file
chrishoina Oct 3, 2025
386df0a
Merge branch 'main' into main
chrishoina Oct 3, 2025
54838a6
updated ddl, proc, and L2T3S6
chrishoina Oct 7, 2025
602c04c
added notes for production curl bug
chrishoina Oct 7, 2025
0f25514
Merge branch 'main' into main
chrishoina Oct 7, 2025
83e5d24
revised prompts to work better with new OCA LLMs
chrishoina Oct 11, 2025
dbf6549
Merge branch 'main' into main
chrishoina Oct 11, 2025
b8dd87c
updated env set up with today's session's URLs for OCA registration.
chrishoina Oct 15, 2025
1e9038a
altered path for oca link
chrishoina Oct 15, 2025
d3e7367
updated url for oca registration.
chrishoina Oct 15, 2025
97d3052
Merge branch 'main' into main
chrishoina Oct 15, 2025
db4c294
bitly for oca link
chrishoina Oct 16, 2025
6cd666a
bitly for oca link
chrishoina Oct 16, 2025
697f72b
Merge branch 'main' of https://github.com/chrishoina/developer
chrishoina Oct 16, 2025
4b6d2ae
Merge branch 'main' into main
klazarz Oct 16, 2025
bdb734e
new instructions for tenancy
chrishoina Nov 4, 2025
a6c9d84
Merge branch 'main' into main
chrishoina Nov 4, 2025
3e12871
removed ppt, and updated images to remove PII
chrishoina Nov 5, 2025
a23dc5e
Merge branch 'main' into main
chrishoina Nov 5, 2025
9a2b77d
added additional manifests and types
chrishoina Nov 12, 2025
59c7988
Merge branch 'main' into main
chrishoina Nov 13, 2025
17669dc
updates for freesql user, more conditional formatting, images for lab 5
chrishoina Nov 17, 2025
ae351b3
Merge branch 'main' into main
chrishoina Nov 17, 2025
c647ab5
Merge branch 'oracle-livelabs:main' into main
chrishoina Nov 18, 2025
1afeea0
improved react and html prompts, added helpful images in intro
chrishoina Nov 19, 2025
07229b5
Added the wms ID to the bottom of the md pages for ease.
chrishoina Nov 19, 2025
577f8f9
added schema information tool to table in lab-2
chrishoina Nov 19, 2025
57bb350
Update create_an_html_dashboard_prompt.md
chrishoina Nov 26, 2025
8568945
Update create_an_html_dashboard_prompt.md
chrishoina Nov 26, 2025
80eaa09
Merge branch 'main' of https://github.com/oracle-livelabs/developer
chrishoina Dec 1, 2025
9e390a7
updating react prompt
chrishoina Dec 1, 2025
0dc250c
updated prompts, removed oca from images, reduced text overall, updat…
chrishoina Jan 6, 2026
728b767
Merge branch 'main' into main
chrishoina Jan 6, 2026
1479e36
user feedback: fixed styling in markdown lists, escaped underscore in…
chrishoina Jan 7, 2026
4908ba5
Merge branch 'main' into main
chrishoina Jan 7, 2026
4bb89db
added schema-information section to explore lab, added images to assist.
chrishoina Jan 8, 2026
883dc5f
Merge branch 'main' into main
chrishoina Jan 8, 2026
12d28b7
testing include functionality
chrishoina Feb 17, 2026
3159334
updated images, improved prereqs, new pc and mac specific steps
chrishoina Feb 17, 2026
447d42a
used optishot to optimize image files
chrishoina Feb 17, 2026
8b6f309
Merge branch 'main' of https://github.com/chrishoina/developer
chrishoina Feb 17, 2026
8e4eb79
Merge branch 'oracle-livelabs:main' into main
chrishoina Feb 18, 2026
a83b1e0
fixed tools table errors, added numbering to labs in manifest
chrishoina Feb 18, 2026
5336670
Merge branch 'oracle-livelabs:main' into main
chrishoina Feb 23, 2026
20608c1
testing-building-blocks
chrishoina Feb 23, 2026
e3bb1f2
updates to take up freesql tasks
chrishoina Feb 23, 2026
65c5eff
updated UI images, instructions, improved flow
chrishoina Sep 17, 2026
06b9966
Merge upstream main into main
chrishoina Sep 18, 2026
aba2da4
fixomat changes
chrishoina Sep 21, 2026
651378e
removed problem md
chrishoina Sep 21, 2026
22ce564
removed href, using ll-approved download attribute instead
chrishoina Sep 21, 2026
9a8c3b1
Merge branch 'main' into main
vasilelucianbrinzei Sep 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  

Large diffs are not rendered by default.

Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.

This file was deleted.

260 changes: 136 additions & 124 deletions build-ords-apis-in-adb/2-build-ords-apis/build-ords-apis.md

Large diffs are not rendered by default.

Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
96 changes: 55 additions & 41 deletions build-ords-apis-in-adb/3-secure-endpoints/secure-endpoints.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,67 +14,71 @@ Estimated Lab Time: 10 minutes

### Prerequisites

- The following lab requires an [Oracle Cloud account](https://www.oracle.com/cloud/free/). You may use your own cloud account, a cloud account that you obtained through a trial, or a training account whose details were given to you by an Oracle instructor.
<if type="tenancy">
- The following lab requires an [Oracle Cloud account](https://www.oracle.com/cloud/free/). You may use your own cloud account, a cloud account obtained through a trial, or a training account whose details were given to you by an Oracle instructor.
</if>
- This lab uses the command line application cURL for testing APIs; some familiarity is suggested.
- This lab assumes you have completed all previous Labs.

## Task 1: Create a Role for an OAuth2.0 client
## Task 1: Create a Role

1. From the REST Workshop, select **Roles** from the **Security** dropdown menu.

![Roles from the security menu](./images-new/1-roles-from-security-menu.png " ")
![Roles from the security menu](./images/1-roles-from-security-menu.png " ")

2. Next, click the **+ Create Role** button.

![click create role button](./images-new/2-create-role-button.png " ")
![click create role button](./images/2-create-role-button.png " ")

3. In the Role Definition modal, enter in a **Role Name**, such as: `my.test.role`, then click **Create**.

![The role definition modal](./images-new/3-role-definition-modal.png " ")
![The role definition modal](./images/3-role-definition-modal.png " ")

## Task 2: Create a Privilege for an OAuth2.0 client
## Task 2: Create a Privilege

1. Next, you'll create a Privilege for the OAuth2.0 client. Select **Privileges** from the **Security** dropdown menu.
1. Next, you'll create a Privilege. Select **Privileges** from the **Security** dropdown menu.

![Selecting privileges from security menu](./images-new/4-select-privileges-option.png " ")
![Selecting privileges from security menu](./images/4-select-privileges-option.png " ")

2. Click the **+ Create Privilege** button, and enter in values for this privilege.

![Create privilege button](./images-new/5-create-privilege-button.png " ")
![Create privilege button](./images/5-create-privilege-button.png " ")

To better follow along, choose values similar to the examples:
To better follow along, choose values similar to the examples:

**Privilege Definition**
- **Label:** `my.test.priv`
- **Name:** `my.test.priv`
- **Description:** `my.test.priv` (You can alter this as needed)
- **Comments:** optional

![create-priv-priv-definition](./images-new/6-create-priv-priv-definition.png " ")
![create-priv-priv-definition](./images/6-create-priv-priv-definition.png " ")

**Roles**
- **Roles:** `my.test.role` (or your unique role, if it differs)
- **Roles:** `my.test.role` (the role you created in Task 1)

![create-priv-roles](./images-new/7-create-priv-roles.png " ")
![create-priv-roles](./images/7-create-priv-roles.png " ")

**Protected Modules**
- **Selected Modules**: `records.module`

![create-priv-selected-modules](./images-new/8-create-priv-protected-modules.png " ")
![create-priv-selected-modules](./images/8-create-priv-protected-modules.png " ")

> **TIP:** Move a Module into the Selected Modules column by dragging, or using the arrow buttons.

3. Once complete, click the **Create** button.
3. Once complete, click the **Create** button.

4. Your `records.module` is now protected by the `my.test.priv`. The `my.test.priv` *enumerates* any roles you've attached to it.

## Task 3: Create an ORDS OAuth Client

1. Select **OAuth Clients** from the **Security Tab**.

![selecting OAuth Clients](./images-new/9-oauth-clients-menu.png " ")
![selecting OAuth Clients](./images/9-oauth-clients-menu.png " ")

2. Then, click the **+ Create OAuth Client** button.

![Click the Create OAuth Client button](./images-new/10-create-oauth-client-button.png " ")
![Click the Create OAuth Client button](./images/10-create-oauth-client-button.png " ")

3. In the Create OAuth Client slider, enter in the following values and click the **Create** button when complete:

Expand All @@ -85,56 +89,66 @@ Estimated Lab Time: 10 minutes
- **Support email:** your choice (mandatory field)
- **Support URI:** https://www.my-company.com/support (can be fictitious)

![Description Field](./images-new/11-create-oauth-client-definition.png " ")
![Description Field](./images/11-create-oauth-client-definition.png " ")

**Roles**
- **Roles:** `my.test.role` (or your unique role, if it differs)
4. Previously you created a Privilege, which includes (enumerates) a Role. Here, you can optionally assign the OAuth Client either the `my.test.role` role, the `my.test.priv` privilege, or both (although in this case, a bit redundant).

![choose-roles-tB](./images-new/12-create-oauth-client-roles.png " ")
Selecting *only* the Role is acceptable, since the Privilege you created includes this Role. Since your `records.module` is protected by the same Privilege, this is a valid approach.

**Privileges**
- **Roles:** `my.test.role` (or your unique role, if it differs)
**Roles**
- **Roles:** `my.test.role` (or your unique role, if it differs)

![choose-ouath-privs](./images-new/13-create-oauth-client-privs.png " ")
![choose-roles-tB](./images/12-create-oauth-client-roles.png " ")

## Task 4: Testing the OAuth2.0 client
Alternatively, you can simply assign the Privilege directly. And since that Privilege enumerates the Role, this is valid as well.

**Privileges**
- **Roles:** `my.test.role` (or your unique role, if it differs)

1. After clicking **Create**, a Client Secret modal will appear. Copy the Secrect Client value to your clipboard or a text editor.
![choose-ouath-privs](./images/13-create-oauth-client-privs.png " ")

> **NOTE:** If you click OK prior to copying, you can also Rotate in a new Client Secret value.
5. Choose an approach, and click the **Create** button when complete.

## Task 4: Testing the OAuth2.0 client

![Copy my client secret](./images-new/14-my-oauth-client-secret.png " ")
1. After clicking **Create**, a Client Secret modal will appear. Copy the Secret Client value to your clipboard or a text editor.

![Rotate in new secret](./images-new/15-mistake-rotate-secret.png " ")
![Copy my client secret](./images/14-my-oauth-client-secret.png " ")

2. You will also next need to copy your Client ID.
> **NOTE:** If you click OK prior to copying, you can also Rotate in a new Client Secret value.

![Client ID value](./images-new/16-copy-client-id-value.png " ")
> ![Rotate in new secret](./images/15-mistake-rotate-secret.png " ")

3. You will first request an Access token from the ORDS OAuth2.0 `/token` endpoint. The Token endpoint is located at the following URL, where `server.com` is the location of your database server (this example assumes your schema is also `ords101`):
2. You will first request an Access token from the ORDS OAuth2.0 `/token` endpoint. The Token endpoint is located at the following URL, where `server.com` is the location of your database server:

```http
<copy>https://[MY ADB's OCI]-[My ADB Name].adb.[My-Region].oraclecloudapps.com/ords/ords101/oauth/token</copy>
```html
<copy>https://[MY ADB's OCI]-[My ADB Name].adb.[My-Region].oraclecloudapps.com/ords/[Schema name]/oauth/token</copy>
```

Your cURL command for retrieving an Access Token should resemble the following (where the `--user` value is your `Client_ID`:`Client_Secret`):
3. The simpliest way to retrive this endpoint, along with a fully-formed curl command, is by clicking the OAuth client's kebab menu, then selecting the Get Bearer Token menu option. Then, copy the command.

```shell
![select-get-bearer-token](./images/16-select-get-bearer-token.png " ")

![copy-oauth-token-command](./images/16-1-copy-oauth-token-command.png " ")

> Your cURL command for retrieving an Access Token should resemble the following (where the `--user` value is your `Client_ID`:`Client_Secret`):

> ```shell
<copy>curl \
--user AbcDef3456XYz..:a45AbcdeF8675309abcd.. \
--data 'grant_type=client_credentials' \
'https://abcdefgh12345-ords101db.adb.us-ashburn-1.oraclecloudapps.com/ords/ords101/oauth/token'</copy>
```

![Obtaining-the-bearer-token-part-one](./images-new/17-obtaining-the-bearer-token-part-one.png " ")
> ![Obtaining-the-bearer-token-part-one](./images/17-obtaining-the-bearer-token-part-one.png " ")

4. Execute your cURL command; you will recieve a valid Access Token. In this example, you can use the `GET` endpoint that you created in **Lab 2, Task 3: Building an ORDS GET API** as your target endpoint.

![Obtaining-the-bearer-token-part-two](./images-new/18-obtaining-the-bearer-token-part-two.png " ")
![Obtaining-the-bearer-token-part-two](./images/18-obtaining-the-bearer-token-part-two.png " ")

5. Before proceeding, attempt a GET request on your GET Handler, it will fail as you have not provided a valid Access Token (Unauthorized).

![An unauthorized get request](./images-new/19-unauthorized-request.png " ")
![An unauthorized get request](./images/19-unauthorized-request.png " ")

6. Finally, with a valid Access Token, perform a GET request on your target endpoint, using the following cURL command as an example:

Expand All @@ -144,7 +158,7 @@ Estimated Lab Time: 10 minutes
'https://abcdefgh12345-ords101db.adb.us-ashburn-1.oraclecloudapps.com/ords/ords101/v1/dept_active/10/true'</copy>
```

![An authorized get request](./images-new/20-authorized-request.png " ")
![An authorized get request](./images/20-authorized-request.png " ")

7. What you should see is the successful response from your `/ords101/v1/dept_active/` endpoint. Congratulations, you've just completed the ORDS 101 Workshop!

Expand All @@ -161,4 +175,4 @@ You may now [proceed to the next lab](#next).

### Last Updated By/Date

- Chris Hoina, September 2025
- Chris Hoina, September 2026
168 changes: 168 additions & 0 deletions build-ords-apis-in-adb/4-workshop-scripts/combined_setup.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
-- ==========================================
-- CREATE DEPARTMENT TABLE
-- Source: create_department_table.sql
-- ==========================================
CREATE TABLE "DEPARTMENT"
( "DEPT_ID" NUMBER GENERATED BY DEFAULT AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE ,
"DEPT_CODE" VARCHAR2(5 BYTE) COLLATE "USING_NLS_COMP",
"ESTABLISHED" DATE,
"DETAILS" JSON
) DEFAULT COLLATION "USING_NLS_COMP" ;

CREATE UNIQUE INDEX "DEPT_CODE_UK" ON "DEPARTMENT" ("DEPT_CODE")
;

CREATE UNIQUE INDEX "DEPT_ID_PK" ON "DEPARTMENT" ("DEPT_ID")
;

CREATE UNIQUE INDEX "DEPARTMENT_DEPT_CODE_UQ" ON "DEPARTMENT" (UPPER("DEPT_CODE"))
;

ALTER TABLE "DEPARTMENT" MODIFY ("DEPT_ID" NOT NULL ENABLE);

ALTER TABLE "DEPARTMENT" MODIFY ("DEPT_CODE" CONSTRAINT "DEPT_CODE_NN" NOT NULL ENABLE);

ALTER TABLE "DEPARTMENT" ADD CONSTRAINT "DEPT_ID_PK" PRIMARY KEY ("DEPT_ID")
USING INDEX ENABLE;


-- ==========================================
-- CREATE EMPLOYEE TABLE
-- Source: create_employee_table.sql
-- ==========================================
CREATE TABLE "EMPLOYEE"
( "EMP_ID" NUMBER GENERATED BY DEFAULT AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE ,
"EMP_NAME" VARCHAR2(100 BYTE) COLLATE "USING_NLS_COMP",
"DEPT_ID" NUMBER,
"COMMENTS" CLOB COLLATE "USING_NLS_COMP"
) DEFAULT COLLATION "USING_NLS_COMP" ;

CREATE UNIQUE INDEX "EMP_ID_PK" ON "EMPLOYEE" ("EMP_ID")
;

CREATE INDEX "EMP_DEPARTMENT_IX" ON "EMPLOYEE" ("DEPT_ID")
;

ALTER TABLE "EMPLOYEE" MODIFY ("EMP_ID" NOT NULL ENABLE);

ALTER TABLE "EMPLOYEE" MODIFY ("EMP_NAME" CONSTRAINT "EMP_NAME_NN" NOT NULL ENABLE);

ALTER TABLE "EMPLOYEE" MODIFY ("DEPT_ID" CONSTRAINT "EMP_DEPT_ID_NN" NOT NULL ENABLE);

ALTER TABLE "EMPLOYEE" ADD CONSTRAINT "EMP_ID_PK" PRIMARY KEY ("EMP_ID")
USING INDEX ENABLE;

ALTER TABLE "EMPLOYEE" ADD CONSTRAINT "FK_EMPLOYEE_DEPT" FOREIGN KEY ("DEPT_ID")
REFERENCES "DEPARTMENT" ("DEPT_ID") ENABLE;


-- ==========================================
-- CREATE PROJECT TABLE
-- Source: create_project_table.sql
-- ==========================================
CREATE TABLE "PROJECT"
( "PROJ_ID" NUMBER GENERATED BY DEFAULT AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE ,
"PROJ_NAME" VARCHAR2(100 BYTE) COLLATE "USING_NLS_COMP",
"DEPT_ID" NUMBER,
"IS_ACTIVE" BOOLEAN
) DEFAULT COLLATION "USING_NLS_COMP" ;

CREATE UNIQUE INDEX "PROJ_ID_PK" ON "PROJECT" ("PROJ_ID")
;

CREATE INDEX "PROJ_DEPARTMENT_IX" ON "PROJECT" ("DEPT_ID")
;

ALTER TABLE "PROJECT" MODIFY ("PROJ_ID" NOT NULL ENABLE);

ALTER TABLE "PROJECT" MODIFY ("PROJ_NAME" CONSTRAINT "PROJ_NAME_NN" NOT NULL ENABLE);

ALTER TABLE "PROJECT" MODIFY ("DEPT_ID" CONSTRAINT "PROJ_DEPT_ID_NN" NOT NULL ENABLE);

ALTER TABLE "PROJECT" ADD CONSTRAINT "PROJ_ID_PK" PRIMARY KEY ("PROJ_ID")
USING INDEX ENABLE;

ALTER TABLE "PROJECT" ADD CONSTRAINT "FK_PROJECT_DEPT" FOREIGN KEY ("DEPT_ID")
REFERENCES "DEPARTMENT" ("DEPT_ID") ENABLE;

-- ==========================================
-- INSERT DATA
-- Source: insert_data.sql
-- ==========================================
INSERT INTO DEPARTMENT (DEPT_CODE, ESTABLISHED, DETAILS) VALUES
('HR001', DATE '2001-04-13', JSON_OBJECT('location' VALUE 'Bldg 1', 'members' VALUE 25)),
('FN002', DATE '2002-06-20', JSON_OBJECT('location' VALUE 'Bldg 2', 'members' VALUE 20)),
('EN003', DATE '2000-11-01', JSON_OBJECT('location' VALUE 'Bldg 3', 'members' VALUE 40)),
('SA004', DATE '2005-01-15', JSON_OBJECT('location' VALUE 'Bldg 4', 'members' VALUE 18)),
('MK005', DATE '2003-12-07', JSON_OBJECT('location' VALUE 'Bldg 5', 'members' VALUE 15)),
('LG006', DATE '2010-03-31', JSON_OBJECT('location' VALUE 'Bldg 6', 'members' VALUE 5)),
('IT007', DATE '2001-09-23', JSON_OBJECT('location' VALUE 'Bldg 7', 'members' VALUE 30)),
('SP008', DATE '2015-05-05', JSON_OBJECT('location' VALUE 'Bldg 8', 'members' VALUE 12)),
('LG009', DATE '2012-07-14', JSON_OBJECT('location' VALUE 'Bldg 9', 'members' VALUE 10)),
('OP010', DATE '2008-08-01', JSON_OBJECT('location' VALUE 'Bldg 10', 'members' VALUE 22));
COMMIT;

INSERT INTO PROJECT (PROJ_NAME, DEPT_ID, IS_ACTIVE) VALUES
('Onboarding', 1, TRUE),
('Audit2024', 2, FALSE),
('NewApp', 3, TRUE),
('SalesCampaign', 4, TRUE),
('SocialMediaPush', 5, FALSE),
('Compliance', 6, TRUE),
('UpgradeInfra', 7, TRUE),
('HelpdeskRevamp', 8, TRUE),
('FleetUpdate', 9, TRUE),
('ProcessReorg', 10, FALSE);
COMMIT;

INSERT INTO EMPLOYEE (EMP_NAME, DEPT_ID, COMMENTS) VALUES
('Alice', 1, 'Strong analyst, quick learner.'),
('Bob', 2, 'CPA certification in progress.'),
('Carol', 3, 'Dev team lead for NewApp project.'),
('David', 4, 'Consistent sales over target.'),
('Eve', 5, 'Leads digital campaigns.'),
('Frank', 6, 'Subject matter expert in compliance.'),
('Grace', 7, 'Skilled in infrastructure upgrades.'),
('Heidi', 8, 'Customer support supervisor.'),
('Ivan', 9, 'Fleet manager - long tenure.'),
('Judy', 10, 'Operations management veteran.');
COMMIT;


-- ==========================================
-- CREATE PROCEDURE
-- Source: create_procedure.sql
-- ==========================================
CREATE OR REPLACE EDITIONABLE PROCEDURE "PR_ADD_AND_ASSIGN_EMPLOYEE" (
p_emp_name IN VARCHAR2,
p_dept_code IN VARCHAR2,
p_comments IN CLOB
) AS
l_dept_id department.dept_id%TYPE;
BEGIN
SELECT dept_id
INTO l_dept_id
FROM department
WHERE UPPER(dept_code) = UPPER(p_dept_code);

INSERT INTO employee (
emp_name,
dept_id,
comments
)
VALUES (
p_emp_name,
l_dept_id,
p_comments
);

EXCEPTION
WHEN NO_DATA_FOUND THEN
raise_application_error(
-20001,
'Department code not found. Valid values: ' ||
'EN003, FN002, HR001, IT007, LG006, LG009, ' ||
'MK005, OP010, SA004, SP008'
);
END;
/
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
CREATE TABLE "DEMO_USER"."DEPARTMENT"
( "DEPT_ID" NUMBER GENERATED BY DEFAULT AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE ,
"DEPT_CODE" VARCHAR2(5 BYTE) COLLATE "USING_NLS_COMP",
"ESTABLISHED" DATE,
"DETAILS" JSON
) DEFAULT COLLATION "USING_NLS_COMP" ;

CREATE UNIQUE INDEX "DEMO_USER"."DEPT_CODE_UK" ON "DEMO_USER"."DEPARTMENT" ("DEPT_CODE")
;

CREATE UNIQUE INDEX "DEMO_USER"."DEPT_ID_PK" ON "DEMO_USER"."DEPARTMENT" ("DEPT_ID")
;

CREATE UNIQUE INDEX "DEMO_USER"."DEPARTMENT_DEPT_CODE_UQ" ON "DEMO_USER"."DEPARTMENT" (UPPER("DEPT_CODE"))
;

ALTER TABLE "DEMO_USER"."DEPARTMENT" MODIFY ("DEPT_ID" NOT NULL ENABLE);

ALTER TABLE "DEMO_USER"."DEPARTMENT" MODIFY ("DEPT_CODE" CONSTRAINT "DEPT_CODE_NN" NOT NULL ENABLE);

ALTER TABLE "DEMO_USER"."DEPARTMENT" ADD CONSTRAINT "DEPT_ID_PK" PRIMARY KEY ("DEPT_ID")
USING INDEX ENABLE;

Loading
Loading