Project Memo List Guide
How to view, add, edit and delete free-form memos (key / value / note) scoped by project (CSN) and server (lssn). This page requires login.
📋 Overview
Project Memo manages memos tied to a specific project (CSN) and logical server (lssn) on a single screen. Store operational notes such as connection info, checklists, or reference URLs in a free-form structure (key / value / detailed note).
Each memo has the following fields:
| Field | Meaning |
|---|---|
lcSn | Memo serial number (PK). Used for edit/delete |
csn | Project code |
lssn | Associated logical server number (optional) |
lcKey | Memo key (e.g. ssh-port, admin-url) |
lcVal | Memo value (e.g. 2222, https://...) |
lcMemo | Free-text note |
🔍 Key Features
1. Specify a server (lssn) · LSVR picker
Type a server number directly into the lssn field, or use [Select LSVR] to pick from the current project's server list. The chosen server number is carried along when you add a memo.
2. Project (CSN) binding
CSN is auto-filled from the URL ?csn= parameter or your current session's project. Switching the project in the top bar re-queries the list for the new project.
3. Fetch
Press [Fetch] to query memos for the selected project. Results render as a table on desktop and cards on mobile.
- Auto URL link: if a value (lcVal) starts with
http(s)://, it renders as a link that opens in a new tab. - Server link: the server (lssn) column links to that server's detail page (
lsvrdetail).
4. Add / Edit / Delete
- Add: [Add Memo] opens the memo add page (
prjMemoPut) carrying the current CSN and lssn. You can also add directly from the in-table edit modal. - Edit: [Edit] on a row opens a modal preloaded with that memo (lcKey / lcVal / lcMemo). On save,
lcSnis sent so the existing memo is updated. - Delete: [Delete] on a row shows a confirmation; on confirm the memo is deleted and the list re-queried. Deletion cannot be undone.
5. Jump to machine detail
[Machine Detail] opens the server detail page (lsvrdetail) for the entered lssn.
🛠️ Usage (summary)
- Enter an lssn or pick a server with [Select LSVR].
- [Fetch] the current project's memos.
- Write/update via [Add Memo] or a row's [Edit] and save.
- Remove unneeded memos with a row's [Delete] (applied immediately after confirm).
🔌 API Usage Guide
This screen calls three commands on the shared GIIP API endpoint (/api/giipApi). In the browser the login session token is sent automatically; when calling externally, use your AK (access token).
The examples below are the same calls that were verified live (CSN 47) as a list → add → delete round trip.
Common format
- Endpoint:
POST https://giipfaw.azurewebsites.net/api/giipApi - Content-Type:
application/x-www-form-urlencoded - Auth: put the AK (login access token) in the
token/usertokenform fields. - Call shape: the
textfield holdscommand paramName…(parameter names, not values); thejsondatafield holds the actual values as JSON.- This is the same convention as other memo screens (e.g. corpMemo).
| Command | Role | text | jsondata fields |
|---|---|---|---|
prjMemoList | List project memos | prjMemoList csn | csn |
prjMemoPut | Add/update (upsert) | prjMemoPut csn lssn lcKey lcVal lcMemo (append lcSn to update) | csn, lssn, lcKey, lcVal, lcMemo, lcSn? |
prjMemoDel | Delete a memo | prjMemoDel csn lcSn | csn, lcSn |
Permission: the AK user must be a member (
tCorpUserRel) of the givencsn; otherwise403 Forbiddenis returned. An invalid AK returns401 Unauthorized.
1) List — prjMemoList
curl -X POST "https://giipfaw.azurewebsites.net/api/giipApi" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "token=YOUR_AK" \
--data-urlencode "usertoken=YOUR_AK" \
--data-urlencode "text=prjMemoList csn" \
--data-urlencode 'jsondata={"csn":47}'
Response (example) — each row includes memo fields plus tags (a JSON array of tags, or null).
[
{ "lcSn": 12, "csn": 47, "lssn": 71198, "lcKey": "ssh-port", "lcVal": "2222", "lcMemo": "maintenance port", "tags": null }
]
If there are no memos, an empty response is returned.
2) Add / Update — prjMemoPut
Omit lcSn to insert a new memo; include lcSn to update it (upsert). To update, append lcSn to text.
# insert
curl -X POST "https://giipfaw.azurewebsites.net/api/giipApi" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "token=YOUR_AK" \
--data-urlencode "usertoken=YOUR_AK" \
--data-urlencode "text=prjMemoPut csn lssn lcKey lcVal lcMemo" \
--data-urlencode 'jsondata={"csn":47,"lssn":71198,"lcKey":"admin-url","lcVal":"https://portal.example.com","lcMemo":"admin console"}'
# update — include lcSn
$body = @{
token = "YOUR_AK"
usertoken = "YOUR_AK"
text = "prjMemoPut csn lssn lcKey lcVal lcMemo lcSn"
jsondata = '{"csn":47,"lssn":71198,"lcKey":"admin-url","lcVal":"https://portal2.example.com","lcMemo":"url changed","lcSn":12}'
}
Invoke-RestMethod -Method Post -Uri "https://giipfaw.azurewebsites.net/api/giipApi" `
-ContentType "application/x-www-form-urlencoded" -Body $body
Response (example) — returns the refreshed list plus the created/updated lcSn.
[ [ { "lcSn": 12, "csn": 47, "lcKey": "admin-url", "lcVal": "https://portal.example.com", "tags": null } ], [ { "lcSn": 12 } ] ]
3) Delete — prjMemoDel
curl -X POST "https://giipfaw.azurewebsites.net/api/giipApi" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "token=YOUR_AK" \
--data-urlencode "usertoken=YOUR_AK" \
--data-urlencode "text=prjMemoDel csn lcSn" \
--data-urlencode 'jsondata={"csn":47,"lcSn":12}'
Response (example)
{ "status": "Success", "lcSn": 12 }
Result codes (RstVal)
| RstVal | Meaning | Action |
|---|---|---|
| (success) | OK. Returns data rows or status:"Success" | — |
| 401 | Unauthorized — missing/invalid AK | Put a valid AK in token/usertoken |
| 403 | Forbidden — no permission for this CSN | Verify the AK user is a member of the project |
For the full result-code definitions see the API Result Codes guide (RstVal).
💡 Notes
- If CSN is empty the list may show nothing. Select a project first.
- Deletion is applied immediately after confirmation and cannot be recovered.
- Putting a URL in
lcValmakes it clickable in the list — handy as a link store.
🔧 Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| No memos shown | CSN empty or wrong | Select the right project and press [Fetch] |
| API returns 401 | Missing/invalid AK | Send a valid AK in token/usertoken |
| API returns 403 | AK user is not a member of the CSN | Check project membership (tCorpUserRel) |
| Update saved as a new memo | lcSn missing from the request | Append lcSn to text and include lcSn in jsondata |
| Delete fails | Result lacks lcSn or session expired | Re-query the list or re-login and retry |
Version: 1.0
Last updated: 2026-07-24
Source file: giipv3/public/help/prjmemolist.en.md