VPS.org API

ເອກະສານ REST API

API ການຈັດການ DNS

ສ້າງເຂດ DNS ແລະຄຸ້ມຄອງບັນທຶກຂອງເຂົາເຈົ້າ. ເຂດແມ່ນສະຫນອງໂດຍ ns1.vps.org, ns2.vps.org ແລະ ns3.vps.org.

ຈຸດສິ້ນສຸດ 13
ເສັ້ນທາງພື້ນຖານ /api/v1/dns-zones, /api/v1/dns-records

ພາບລວມ

ເຂດມີບັນທຶກສໍາລັບໂດເມນຫນຶ່ງ. ການປ່ຽນແປງທຸກຢ່າງທີ່ທ່ານເຮັດຜ່ານ API ແມ່ນດຶງໄປທີ່ VPS.org nameservers ທັນທີ. ເພື່ອໃຫ້ບໍລິການໂດເມນຈາກເຂດເຫຼົ່ານີ້, ຕັ້ງຊື່ຂອງເຄື່ອງແມ່ຂ່າຍທີ່ລົງທະບຽນຂອງທ່ານເພື່ອ ns1.vps.org, ns2.vps.org ແລະ ns3.vps.org.

ການ​ປ່ຽນແປງ​ແມ່ນ​ຖືກ​ບັນທຶກ ແລະ ເຜີຍແຜ່​ໃນ​ບາດກ້າວ​ດຽວ: ຖ້າ​ຊື່​ເຊີບເວີ​ປະຕິເສດ​ການ​ປ່ຽນແປງ, ຄໍາຮ້ອງຂໍ​ຈະ​ກັບ​ຄືນ​ໄປ​ທີ່ 502 ແລະ ບໍ່ມີ​ຫຍັງ​ຈະ​ຖືກ​ບັນທຶກ​ໄວ້. ເຂດ​ບໍ່​ສາມາດ​ສ້າງ​ໃຫ້​ກັບ​ໂດເມນ​ທີ່​ໄດ້​ຈັດການ​ໂດຍ​ບັນຊີ​ອື່ນ, ແມ່ ຫຼື ລູກ​ຂອງ​ເຂດ​ຂອງ​ບັນຊີ​ອື່ນ, ຫຼື ຊື່​ທີ່​ໄດ້​ຮັບ​ການ​ກູ້​ຢືມ VPS.org.

ຕ້ອງການ​ສິດ​ອຳນາດ: dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*

ຮັບ /api/v1/dns-zones/

ລາຍຊື່ເຂດ DNS ທັງໝົດ

ສົ່ງ​ຄືນ​ເຂດ​ຂອງ​ທ່ານ, ໃກ້​ສຸດ​ກ່ອນ, 25 ຕໍ່​ໜ້າ. ບັນທຶກ​ບໍ່​ໄດ້​ລວມ​ຢູ່​ທີ່​ນີ້; ເອົາ​ເຂດ​ດຽວ​ເພື່ອ​ເອົາ​ພວກ​ມັນ​ມາ​ໃຊ້​ໄດ້.

ພາລາມິເຕີການສອບຖາມ

ຕົວ​ເລືອກ​ ປະເພດ ຕ້ອງມີການ ຄໍາອະທິບາຍ
domain string ​ບໍ່ ສົ່ງ​ຄືນ​ພຽງແຕ່​ເຂດ​ທີ່​ມີ​ຊື່​ໂດເມນ​ນີ້​ເທົ່ານັ້ນ
page integer ​ບໍ່ ຕົວເລກ​ໜ້າ, ເລີ່ມ​ຈາກ 1

ຕົວຢ່າງການຮ້ອງຂໍ

cURL
Python
JavaScript
curl -X GET "https://admin.vps.org/api/v1/dns-zones/?domain=example.com" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
import requests

url = "https://admin.vps.org/api/v1/dns-zones/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}

response = requests.get(url, headers=headers, params={"domain": "example.com"})
for zone in response.json()["results"]:
    print(zone["uuid"], zone["domain"], zone["record_count"])
const response = await fetch('https://admin.vps.org/api/v1/dns-zones/?domain=example.com', {
  headers: { 'Authorization': 'Bearer YOUR_API_TOKEN' }
});

const data = await response.json();
console.log(data.results);

ຕົວຢ່າງການຕອບສະໜອງ

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c",
      "domain": "example.com",
      "created_at": "2026-09-06T03:11:48.829693Z",
      "record_count": 5
    }
  ]
}

ພາກສະໜາມຕອບສະໜອງ

​ແຄມ​ເປນ ປະເພດ ຄໍາອະທິບາຍ
uuid string ຕົວ​ລະບຸ​ເຂດ
domain string ຊື່​ໂດເມນ, ເກັບ​ເປັນ​ຕົວອັກສອນ​ນ້ອຍ
created_at datetime ເວລາ​ສ້າງ (ISO 8601, UTC)
record_count integer ຈໍານວນ​ບັນທຶກ​ໃນ​ເຂດ, ລວມ​ທັງ​ບັນທຶກ NS ສາມ​ຢ່າງ

ລະຫັດສະຖານະການຕອບສະໜອງ

200 ສຳເລັດ
403 API token ຂາດ ຫຼື ບໍ່ຖືກຕ້ອງ, ຫຼື token ບໍ່ມີສິດທີ່ຕ້ອງການ
ສົ່ງ /api/v1/dns-zones/

ສ້າງ​ເຂດ DNS

ສ້າງ​ເຂດ ແລະ ເຜີຍແຜ່​ມັນ. ເຂດ​ເລີ່ມຕົ້ນ​ດ້ວຍ​ບັນທຶກ NS ສາມ​ອັນ ສຳ ລັບ ns1, ns2 ແລະ ns3. vps.org, ເຊິ່ງ​ແມ່ນ​ບັນທຶກ​ລະບົບ ແລະ ບໍ່ສາມາດ​ຈັດການ ຫຼື ຖອນອອກໄດ້.

ຮ້ອງຂໍພາລາມິເຕີຂອງຮ່າງກາຍ

ຕົວ​ເລືອກ​ ປະເພດ ຕ້ອງມີການ ຄໍາອະທິບາຍ
domain string ແມ່ນແລ້ວ ຊື່​ໂດເມນ, ຕົວຢ່າງ example. com
curl -X POST "https://admin.vps.org/api/v1/dns-zones/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domain": "example.com"}'

ຕົວຢ່າງການຕອບສະໜອງ

{
  "uuid": "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c",
  "domain": "example.com",
  "created_at": "2026-09-14T21:02:11.402113Z",
  "records": [
    {
      "uuid": "1f2e3d4c-5b6a-4978-8a9b-0c1d2e3f4a5b",
      "record_type": "NS",
      "name": "@",
      "value": "ns1.vps.org",
      "ttl": 86400,
      "priority": null,
      "created_at": "2026-09-14"
    },
    ...
  ],
  "record_count": 3
}

ລະຫັດສະຖານະການຕອບສະໜອງ

201 ເຂດ​ທີ່​ໄດ້​ສ້າງ
400 ຊື່​ໂດເມນ​ທີ່​ບໍ່​ຖືກຕ້ອງ
ຮັບ /api/v1/dns-zones/{uuid}/

ເອົາ​ລາຍລະອຽດ​ຂອງ​ເຂດ DNS

ສົ່ງ​ຄືນ​ເຂດ​ໜຶ່ງ​ດ້ວຍ​ບັນທຶກ​ທັງ​ໝົດ​ຂອງ​ມັນ​ໃນ​ແຖບ​ບັນທຶກ​. ການ​ຕອບ​ຮັບ​ມີ​ຮູບ​ແບບ​ຄື​ກັນ​ກັບ​ການ​ຕອບ​ຮັບ​ການ​ສ້າງ​ຢູ່​ເທິງ​ນີ້.

curl -X GET "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

ລະຫັດສະຖານະການຕອບສະໜອງ

200 ສຳເລັດ
404 ບໍ່ພົບ ຫຼື ມັນເປັນສ່ວນຂອງບັນຊີອື່ນ
ລຶບ /api/v1/dns-zones/{uuid}/

ເອົາ​ເຂດ DNS ອອກ

ເອົາ​ເຂດ​ອອກ​ຈາກ​ເຄື່ອງ​ຮັບ​ຊື່​ທັງ​ສາມ, ກວດ​ເບິ່ງ​ວ່າ​ບໍ່ມີ​ເຄື່ອງ​ຮັບ​ຊື່​ໃດ​ທີ່​ຍັງ​ໃຫ້ບໍລິການ​ມັນ, ແລະ​ລຶບ​ເຂດ ແລະ​ບັນທຶກ​ຂອງ​ມັນ​ອອກ​ຈາກ​ນັ້ນ. ຖ້າ​ເຄື່ອງ​ຮັບ​ຊື່​ຍັງ​ຕອບ​ຮັບ​ເຂດ, ຄໍາຮ້ອງຂໍ​ຈະ​ລົ້ມເຫລວ ແລະ​ເຂດ​ຈະ​ຖືກ​ຮັກສາ​ໄວ້ ເພື່ອ​ໃຫ້​ທ່ານ​ສາມາດ​ພະຍາຍາມ​ອີກ​ຄັ້ງ​ໄດ້.

curl -X DELETE "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

ລະຫັດສະຖານະການຕອບສະໜອງ

204 ໄດ້​ລຶບ​ອອກ​ແລ້ວ ។ ການ​ຕອບ​ຮັບ​ບໍ່ມີ​ເນື້ອໃນ​ຕົວ​ຈິງ ។
400 ຊື່​ເຊີບເວີ​ຍັງ​ໃຫ້ບໍລິການ​ເຂດ​ນີ້​ຢູ່. ເຂດ​ນີ້​ບໍ່​ໄດ້​ຖືກ​ລຶບ; ລາຍຊື່​ຂໍ້ຜິດພາດ​ໃນ​ແຖບ​ລາຍລະອຽດ.
404 ບໍ່ພົບ ຫຼື ມັນເປັນສ່ວນຂອງບັນຊີອື່ນ
ຮັບ ສົ່ງ /api/v1/dns-zones/{uuid}/records/

ລາຍ​ຊື່ ຫຼື ເພີ່ມ​ບັນທຶກ​ໃນ​ເຂດ

GET ສົ່ງ​ຄືນ​ບັນທຶກ​ທຸກ​ຢ່າງ​ໃນ​ເຂດ​ເປັນ​ອາຣາມ​ປົກກະຕິ (ບໍ່​ໄດ້​ຈັດ​ເປັນ​ໜ້າ), ຈັດ​ລຽງ​ຕາມ​ປະເພດ ແລະ ຊື່. POST ເພີ່ມ​ບັນທຶກ​ໄປ​ຍັງ​ເຂດ ແລະ ເຜີຍແຜ່​ມັນ.

ຮ້ອງຂໍພາລາມິເຕີຂອງຮ່າງກາຍ (POST)

ຕົວ​ເລືອກ​ ປະເພດ ຕ້ອງມີການ ຄໍາອະທິບາຍ
record_type string ແມ່ນແລ້ວ A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA
name string ແມ່ນແລ້ວ @ ສຳ​ລັບ​ໂດເມນ​ເອງ ຫຼື ຊື່​ເຊັ່ນ www. ຊື່​ຈະ​ຖືກ​ເກັບ​ໄວ້​ໃນ​ຕົວອັກສອນ​ນ້ອຍໆ.
value string ແມ່ນແລ້ວ ຂໍ້ມູນ​ບັນທຶກ, ຕົວຢ່າງ​ທີ່ຢູ່ IP ຫຼື ຊື່​ເຄື່ອງ. ຊື່​ເຄື່ອງ​ບໍ່​ຕ້ອງການ​ຈຸດ​ຢູ່​ເບື້ອງຫຼັງ ແລະ ຄ່າ TXT ບໍ່​ຕ້ອງການ​ຕົວອັກສອນ​ຖີ້ມ; ທັງ​ສອງ​ຈະ​ຖືກ​ເພີ່ມ​ເມື່ອ​ບັນທຶກ​ຖືກ​ເຜີຍແຜ່.
ttl integer ແມ່ນແລ້ວ ເວລາ​ທີ່​ຈະ​ຢູ່​ຕໍ່​ໄປ ນັບ​ເປັນ​ວິນາທີ
priority integer ມີ​ແຕ່ MX ແລະ SRV ຕ້ອງການ​ສຳລັບ​ບັນທຶກ MX ແລະ SRV ແລະ ບໍ່​ໄດ້​ລະບຸ​ສຳລັບ​ປະເພດ​ອື່ນໆ​ທັງ​ໝົດ. ສຳ​ລັບ SRV, ວາງ​ນໍ້າໜັກ, پورດ ແລະ ຈຸດໝາຍ​ໃນ​ຄ່າ.

ຕົວຢ່າງການຮ້ອງຂໍ

cURL
Python
curl -X POST "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/records/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"record_type": "MX", "name": "@", "value": "mail.example.com", "ttl": 3600, "priority": 10}'
import requests

zone_uuid = "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c"
url = f"https://admin.vps.org/api/v1/dns-zones/{zone_uuid}/records/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
data = {"record_type": "A", "name": "www", "value": "203.0.113.10", "ttl": 3600}

response = requests.post(url, headers=headers, json=data)
print(response.status_code, response.json())

ຕົວຢ່າງການຕອບສະໜອງ

{
  "uuid": "9d430082-5562-42b4-a0b2-12a6f6c862f9",
  "record_type": "MX",
  "name": "@",
  "value": "mail.example.com",
  "ttl": 3600,
  "priority": 10,
  "created_at": "2026-09-14"
}

ພາກສະໜາມຕອບສະໜອງ

​ແຄມ​ເປນ ປະເພດ ຄໍາອະທິບາຍ
uuid string ຕົວ​ລະບຸ​ບັນທຶກ, ຖືກ​ໃຊ້​ໂດຍ /api/v1/dns-records/ endpoints
priority integer | null ບູລິມະສິດ​ສຳລັບ​ບັນທຶກ MX ແລະ SRV, ຖ້າ​ບໍ່ດັ່ງນັ້ນ ແມ່ນ​ບໍ່ມີ
created_at date ພຽງແຕ່​ວັນ​ທີ່​ສ້າງ (Y- MM- DD), ບໍ່​ມີ​ເວລາ

ລະຫັດສະຖານະການຕອບສະໜອງ

200 ເອົາ​ມາ​ໃຊ້​ຄືນ
201 POST: ສ້າງ​ບັນທຶກ
400 ການ​ກວດ​ສອບ​ຄວາມ​ຜິດພາດ, ຕົວຢ່າງ ປະເພດ​ບັນທຶກ​ທີ່​ບໍ່​ຮູ້, ສູນ​ເສຍ ttl, ຫຼື ບັນທຶກ MX ຫຼື SRV ທີ່​ບໍ່ມີ​ຄວາມ​ສຳຄັນ
404 ບໍ່ພົບ ຫຼື ມັນເປັນສ່ວນຂອງບັນຊີອື່ນ
ສົ່ງ /api/v1/dns-zones/{uuid}/sync/

ພິມ​ອອກ​ຄືນ​ເຂດ

ປ່ອຍ​ເຂດ ແລະ​ບັນທຶກ​ທັງ​ໝົດ​ຂອງ​ມັນ​ໄປ​ຍັງ​ເຄື່ອງ​ຮັບ​ຊື່​ອີກ​ຄັ້ງ ។ ການ​ປ່ຽນ​ແປງ​ບັນທຶກ​ຈະ​ຖືກ​ເຜີຍແຜ່​ໂດຍ​ស្វ័យ​ប្រវត្តិ, ແຕ່​ການ​ເຜີຍແຜ່​ແມ່ນ​ຄວາມ​ພະຍາຍາມ​ທີ່​ດີ​ທີ່​ສຸດ ແລະ​ການ​ລົ້ມ​ເຫຼວ​ບໍ່​ແມ່ນ​ການ​ລົ້ມ​ເຫຼວ​ຂອງ​ຄໍາຮ້ອງ​ຂໍ​ຕົ້ນຕໍ, ສະນັ້ນ​ໃຊ້​ມັນ​ເມື່ອ​ການ​ປ່ຽນ​ແປງ​ບໍ່​ປາກົດ​ຢູ່​ໃນ​ການ​ຄົ້ນ​ຫາ DNS ។ ບໍ່ມີ​ສ່ວນ​ຂອງ​ຄໍາຮ້ອງ​ຂໍ​ທີ່​ຕ້ອງການ ។

curl -X POST "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/sync/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "detail": "Zone example.com synced to PowerDNS"
}
ຮັບ ສົ່ງ /api/v1/dns-records/

ລາຍ​ຊື່ ຫຼື ສ້າງ​ບັນທຶກ​ຜ່ານ​ເຂດ

GET ສົ່ງຄືນບັນທຶກຂອງເຂດທັງຫມົດຂອງທ່ານ, 25 ຕໍ່ຫນ້າ, ຈັດລຽງຕາມໂດເມນ, ປະເພດແລະຊື່. POST ສ້າງບັນທຶກຄືກັບຈຸດສຸດທ້າຍຂອງບັນທຶກເຂດ, ແຕ່ເອົາເຂດໃນຮ່າງກາຍເປັນ zone_ uuid.

ພາລາມິເຕີການສອບຖາມ

ຕົວ​ເລືອກ​ ປະເພດ ຕ້ອງມີການ ຄໍາອະທິບາຍ
zone string ​ບໍ່ ມີ​ແຕ່​ບັນທຶກ​ຂອງ​ເຂດ​ທີ່​ມີ uuid ນີ້
record_type string ​ບໍ່ ບັນທຶກ​ປະເພດ​ນີ້​ເທົ່ານັ້ນ, ຕົວຢ່າງ MX (ບໍ່​ເໝາະສົມ​ກັບ​ຕົວອັກສອນ​ໃຫຍ່​ນ້ອຍ)
page integer ​ບໍ່ ຕົວເລກ​ໜ້າ, ເລີ່ມ​ຈາກ 1
curl -X GET "https://admin.vps.org/api/v1/dns-records/?zone=c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c&record_type=A" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

curl -X POST "https://admin.vps.org/api/v1/dns-records/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"zone_uuid": "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c", "record_type": "TXT", "name": "@", "value": "v=spf1 mx -all", "ttl": 3600}'
{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "4b8e2c10-7d3f-4a5b-9e6c-1a2b3c4d5e6f",
      "record_type": "A",
      "name": "www",
      "value": "203.0.113.10",
      "ttl": 3600,
      "priority": null,
      "created_at": "2026-09-14"
    }
  ]
}

ລະຫັດສະຖານະການຕອບສະໜອງ

200 ໄດ້ຮັບ: ສໍາເລັດ
201 POST: ສ້າງ​ບັນທຶກ
400 ເກີດ​ຂໍ້ຜິດພາດ​ໃນການ​ກວດ​ສອບ, ຫຼື zone_ uuid ຂາດ ຫຼື ບໍ່​ແມ່ນ​ເຂດ​ຂອງ​ທ່ານ
ຮັບ PUT PATCH ລຶບ /api/v1/dns-records/{uuid}/

ເອົາ, ປັບປຸງ ຫຼື ເອົາອອກ

GET ສົ່ງຄືນບັນທຶກຫນຶ່ງ. PUT ແທນ​ທີ່​ມັນ ແລະ ຕ້ອງການ record_ type, name, value ແລະ ttl. PATCH ປ່ຽນແປງພຽງແຕ່ພື້ນທີ່ທີ່ທ່ານສົ່ງ. DELETE ເອົາອອກບັນທຶກແລະສົ່ງຄືນ 204 ໂດຍບໍ່ມີຮ່າງກາຍ. ການປ່ຽນແປງແມ່ນເຜີຍແຜ່ທັນທີ. ບັນທຶກ NS ສ້າງຂຶ້ນກັບເຂດແມ່ນບັນທຶກລະບົບ: ປັບປຸງຫຼືລຶບພວກມັນກັບຄືນ 403.

ເມື່ອ​ທ່ານ​ PATCH ​ຄວາມ​ສຳຄັນ​ຂອງ​ບັນທຶກ MX ຫຼື SRV, ສົ່ງ record_type ໃນ​ຄໍາຮ້ອງຂໍ​ດຽວກັນ. ຮ່າງກາຍ​ຂອງ PATCH ທີ່ມີ​ຄວາມ​ສຳຄັນ ແຕ່​ບໍ່ມີ record_type ຈະ​ລົບ​ຄວາມ​ສຳຄັນ​ອອກ​ໄປ.
curl -X PATCH "https://admin.vps.org/api/v1/dns-records/4b8e2c10-7d3f-4a5b-9e6c-1a2b3c4d5e6f/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ttl": 300}'

ລະຫັດສະຖານະການຕອບສະໜອງ

200 GET, PUT ຫຼື PATCH: ບັນທຶກ
204 ໄດ້​ລຶບ​ອອກ​ແລ້ວ ។ ການ​ຕອບ​ຮັບ​ບໍ່ມີ​ເນື້ອໃນ​ຕົວ​ຈິງ ។
400 ​ຂໍ້ຜິດພາດ​ໃນການ​ផ្ទៀងផ្ទាត់​ភាព​ຖືກຕ້ອງ
403 ບັນທຶກແມ່ນ​ບັນທຶກລະບົບ ຫຼື ຕົວ​ຊີ້​ບອກ​ບໍ່ມີ​ສິດ​ທີ່​ຕ້ອງການ
404 ບໍ່ພົບ ຫຼື ມັນເປັນສ່ວນຂອງບັນຊີອື່ນ

ການ​ຈັດການ​ຂໍ້​ຜິດພາດ

ຂໍ້ຜິດພາດ​ການ​ກວດ​ສອບ​ໄດ້​ກັບ​ຄືນ 400 ດ້ວຍການ​ບອກ​ບັນຫາ​ໂດຍ​ຊື່​ແຫລ່ງ:

{
  "priority": ["MX records require a priority value"]
}

ທົດສອບ​ການ​ປ່ຽນ​ແປງ DNS

ຖາມ​ເຊີບເວີ​ຊື່ VPS.org ໂດຍ​ກົງ​ເພື່ອ​ຢືນຢັນ​ການ​ປ່ຽນ​ແປງ​ແມ່ນ​ມີ​ຊີວິດ​ກ່ອນ​ທີ່​ການ​ມອບ​ໝາຍ​ຂອງ​ທະບຽນ​ຫຼື​ການ​ເກັບ​ໄວ້​ຂອງ​ຜູ້​ແກ້ໄຂ​ຈະ​ຈັບ​ໄດ້:

dig @ns1.vps.org example.com A
dig @ns2.vps.org example.com MX
dig @ns3.vps.org www.example.com