This page describes AAES Govern’s controls. AAES Operate has private-work permissions, operational reviews and recorded-spend limits; it does not include Govern. About AAES Govern
Before you enable this package
The endpoint host 'netsuite-account.invalid' is a reserved .invalid placeholder that fails closed until you substitute the real host in both the endpoint URLs and the egress allowlist.
Read each action's effects and exclusions below. Before installation, also read the complete package requirements, including credential issuance, scope, expiry, and provider permissions. These are deployment prerequisites, not capabilities this package supplies.
Capabilities (5)
Each capability below is one registered operation. The complete package JSON includes its exact network destination allowlist. The repository stores it at packs/netsuite.json and embeds a copy in the release binary.
Risk tiers. R0 is the minimum for reads. R2 is the minimum for write, create, update, execute, and invoke. R3 is the minimum for delete, send, pay, deploy, approve, share, and transfer. Operators can raise these levels. A minimum tier does not measure the operation's business or confidentiality risk.
On supported execution paths routed through AAES Govern, the R3 actions listed below require approval by an authorized person. Bypass paths and observation-only registrations are outside that guarantee. A provider's restoration feature does not remove this approval requirement. A provider-side approval, such as approving a GitLab merge request, is also separate from AAES Govern human approval. The capability matrix shows which execution paths are implemented, restricted to lab use, or refused at startup. Live compatibility must be tested in your environment.
Field guide. Endpoint is the service address and request method. Connector is the adapter that makes the call. Custody describes how the credential is held; the credential reference identifies the value to resolve. Data class sets handling requirements: pii means personal data, financial means financial records, and internal means internal organizational data.
netsuite.vendors.read v1.0.0R0
- Kind
- tool
- Action
- read
- Endpoint
GET https://netsuite-account.invalid/services/rest/record/v1/vendor- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-netsuite-oauth2-access-token- Data class
- pii
Read vendors.
Read the vendor record collection. Payload precision: Oracle's collection-paging documentation shows a collection response whose items array carries only each record's id and a self link (with count, hasMore, offset and totalResults paging fields) — the full vendor fields (names, legal names, addresses, emails, phone numbers, tax registration details) come only from the single-record read GET /services/rest/record/v1/vendor/{id}, which this pack deliberately does not register, so this capability returns record references and no unregistered detail read happens automatically.
A vendor can be an individual person, so the read is classified as pii (personal data) on the strength of the records it references (a deployment whose policy classifies vendor master data differently may change it).
The registered path covers the collection read only — single-vendor reads (GET /services/rest/record/v1/vendor/{id}) and every sublist and subresource are not registered by this pack.
The host is a reserved placeholder: substitute the customer's account-specific host before enabling.
netsuite.vendorbills.read v1.0.0R0
- Kind
- tool
- Action
- read
- Endpoint
GET https://netsuite-account.invalid/services/rest/record/v1/vendorBill- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-netsuite-oauth2-access-token- Data class
- financial
Read vendor bills.
Read the vendor bill record collection, classified as financial data. Oracle's own use-case documentation shows collection reads on this resource filtered with the q parameter (GET .../record/v1/vendorBill?q=entity EQUAL <id>).
Payload precision: Oracle's collection-paging documentation shows a collection response whose items array carries only each record's id and a self link (with count, hasMore, offset and totalResults paging fields) — the bill header fields (vendor, amounts, currencies, terms, statuses) come only from the single-record read, which this pack deliberately does not register, so this capability returns record references and no unregistered detail read happens automatically.
The registered path covers the collection read only — single-bill reads, the billingAddress subrecord and the expense and item sublists are not registered by this pack.
The host is a reserved placeholder: substitute the customer's account-specific host before enabling.
netsuite.vendorbills.create v1.0.0R3
- Kind
- tool
- Actions
- create, approve
- Endpoint
POST https://netsuite-account.invalid/services/rest/record/v1/vendorBill- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-netsuite-oauth2-access-token- Data class
- financial
Create vendor bills.
Create one vendor bill record; Oracle documents POST /services/rest/record/v1/vendorBill with a worked creation sample.
Registered as create plus approve at the minimum R3 tier: Oracle documents approving a vendor bill by setting its approval status on this same record surface (PATCH /services/rest/record/v1/vendorbill/{id} with approvalstatus set to 2), and Oracle's creation documentation states only that not all record fields can be set using POST, without enumerating which — so no documented provider-side restriction prevents an unrestricted creation POST from carrying an approval status, and this registration does not restrict which writable fields a request may carry beyond what the role's own permissions permit.
An unrestricted creation path that can create an already-approved bill is approve-capable, so it sits at the approve floor rather than the create floor.
Result: the request is accepted and a payables document is created; the call itself schedules no payment and moves no money — Oracle documents payment against bills through the separate vendorPayment record, which this pack does not register.
The host is a reserved placeholder: substitute the customer's account-specific host before enabling.
netsuite.purchaseorders.read v1.0.0R0
- Kind
- tool
- Action
- read
- Endpoint
GET https://netsuite-account.invalid/services/rest/record/v1/purchaseOrder- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-netsuite-oauth2-access-token- Data class
- financial
Read purchase orders.
Read the purchase order record collection, classified as financial data. The Purchase Orders feature must be enabled for this record to be accessible, per Oracle's record documentation.
Payload precision: Oracle's collection-paging documentation shows a collection response whose items array carries only each record's id and a self link (with count, hasMore, offset and totalResults paging fields) — the order header fields (vendors, buyers, amounts, currencies, statuses) come only from the single-record read, which this pack deliberately does not register, so this capability returns record references and no unregistered detail read happens automatically.
The registered path covers the collection read only — single-order reads, the billingAddress and shippingAddress subrecords and the item and expense sublists are not registered by this pack.
The host is a reserved placeholder: substitute the customer's account-specific host before enabling.
netsuite.customers.read v1.0.0R0
- Kind
- tool
- Action
- read
- Endpoint
GET https://netsuite-account.invalid/services/rest/record/v1/customer- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-netsuite-oauth2-access-token- Data class
- pii
Read customers.
Read the customer record collection.
Payload precision: Oracle's collection-paging documentation shows a collection response whose items array carries only each record's id and a self link (with count, hasMore, offset and totalResults paging fields) — the customer fields (names, company names, emails, addresses, phone numbers) are personal data held on the single record, read via GET /services/rest/record/v1/customer/{id}, which this pack deliberately does not register, so this capability returns record references and no unregistered detail read happens automatically; the read is still classified as pii (personal data) on the strength of the records it references.
The registered path covers the collection read only — single-customer reads (GET /services/rest/record/v1/customer/{id}) and every sublist (addressbook, currencylist, partners, salesteam and the rest) are not registered by this pack.
The host is a reserved placeholder: substitute the customer's account-specific host before enabling.
Credential reference
The credential field names a reference rather than containing credential material. Packs are designed not to contain secrets; the format checks cover only known credential formats and cannot prove that arbitrary text contains no secrets. Installing a package registers its capabilities. Configure the provider credentials, endpoints, and network access, then test the integration in your environment before enabling it.
- Reference
secret-ref-netsuite-oauth2-access-token- Custody
- customer_vault
- Injection
- header (Authorization)
Configure the value and injection format specified in the package. Assign responsibility for credential rotation and revocation, restrict provider permissions, and keep credential material out of logs and responses.
Complete credential requirements
An OAuth 2.0 access token for the customer's own NetSuite account, held in the client's own secret manager. The stored material must be the complete Authorization header value (scheme included): 'Bearer', one separating space, then the access token — 'Bearer <token>'. The executor injects the stored value verbatim and performs no token lifecycle itself: an external deployment process obtains and renews the token.
For machine-to-machine use NetSuite documents the OAuth 2.0 client credentials flow: an administrator maps an entity, role and application to a certificate on the OAuth 2.0 Client Credentials (M2M) Setup page, and the external process signs a JWT client assertion with the certificate's private key and POSTs it to https://<accountID>.suitetalk.api.netsuite.com/services/rest/auth/oauth2/v1/token; the certificate's private key is itself secret material and must live in the deployment's own custody, outside the executor. customer_vault is the only generally-supported production custody model here — identity_federation and customer_broker are refused at startup and inline is lab-only.
Expiry and revocation: OAuth 2.0 access tokens are short-lived and the external process must re-request them on expiry — Oracle documents the M2M flow as a POST to the token endpoint that returns an access token, with renewal owned by the external process.
An administrator can revoke the certificate mapping on the M2M setup page at any time (a revoked certificate cannot be reused to obtain new tokens), and the mapped role's permissions can be removed at any time, which changes what subsequently issued tokens can do; disabling issuance and changing role permissions are different events from invalidating an already-issued token, and Oracle's documentation does not describe either step as invalidating a token already issued before its natural expiry.
An expired value fails closed.
Least privilege: the integration record should carry only the REST Web Services scope, and the mapped role should hold only the record permissions the registered capabilities need (vendor, customer, purchase order and vendor bill inquiry, plus bill entry for the create) and nothing more — the same identity must not hold permissions for vendor payments or record deletion, which this pack deliberately does not register.
Approval caution: because Oracle documents no field-level restriction preventing a creation POST from carrying an approval status, the bill-entry permission is treated as approve-capable and the create capability is tiered R3 on that basis; a deployment whose role configuration demonstrably prevents setting approval status on creation may record that restriction in its own review, but the tiering here does not rely on it. Token-based authentication (TBA) is a different, per-request-signed scheme that this pack cannot express; see the pack notes.
Executor hygiene: the value must live only in executor memory for the lifetime of a call, must never be written to logs, traces or diagnostics, and must not appear in crash dumps; a deployment that cannot meet that bar must not enable the pack.
Resources
netsuite-vendors(api, pii):https://netsuite-account.invalid/services/rest/record/v1/vendornetsuite-vendorbills(api, financial):https://netsuite-account.invalid/services/rest/record/v1/vendorBillnetsuite-purchaseorders(api, financial):https://netsuite-account.invalid/services/rest/record/v1/purchaseOrdernetsuite-customers(api, pii):https://netsuite-account.invalid/services/rest/record/v1/customer
Technical package and review record
Complete provider requirements and exclusions
The endpoint host 'netsuite-account.invalid' is a reserved non-production placeholder (an RFC 2606 reserved TLD): substitute the customer's own NetSuite account-specific host, whose documented form is <accountID>.suitetalk.api.netsuite.com, before enabling, in every endpoint, in every resource locator and in every egress allowlist entry. The allowlist matches exactly, so endpoints and allowlist must be substituted together, and substitution is a required deployment step — the reserved host being allowlisted does not make an unsubstituted pack safe to enable.
This pack registers only endpoints the SuiteTalk REST Web Services documentation on docs.oracle.com documents: collection reads on the vendor, vendorBill, purchaseOrder and customer records (GET /services/rest/record/v1/<recordType>, with filtering via the documented q parameter), and creation of a vendor bill (POST /services/rest/record/v1/vendorBill, which the vendor bill record page documents with a worked sample). All reads are collection reads only: single-record reads (GET /services/rest/record/v1/vendor/{id} and the equivalent for the other record types) exist in the API and are deliberately not registered.
Documented exclusions, framed as what this pack does not register: record update (PATCH) and record delete (DELETE) on every record type; upsert (PUT); record actions and transforms (POST .../{id}/action/... and transform operations); the vendorPayment and customerPayment records, which record payments against documents (money moves); the customerRefund record, which returns money; and the vendorCredit record, which is a credit memo — an accounting record that reduces the balance owed rather than a record that moves funds, excluded alongside the money records because this pack registers no money-adjacent writes at all; the SuiteQL query service (POST /services/rest/query/v1/suiteql) and every other query subservice; RESTlets; and the metadata-catalog.
The vendor bill create is registered as create plus approve at the minimum R3 tier: Oracle documents approving a vendor bill by setting its approval status on this same record surface (the Use Case for Approving a Vendor Bill shows PATCH /services/rest/record/v1/vendorbill/{id} setting approvalstatus to 2), and Oracle's record-creation documentation states only that not all record fields can be set with POST, without enumerating which — so no documented provider-side restriction prevents an unrestricted creation POST from carrying an approval status, and this registration does not constrain the request body beyond what the role's own permissions permit.
An unrestricted creation path that can create an already-approved bill is approve-capable and must sit at the approve floor rather than the create floor. A created bill is otherwise a payables record, not a payment: Oracle documents payment against bills through the separate vendorPayment record, which this pack does not register, so object-created is not payment-scheduled and not money-moved. Authentication: SuiteTalk REST supports two credential schemes.
This pack registers OAuth 2.0, whose documented header is 'Authorization: Bearer <access token>' — a stored value the connector can inject verbatim.
NetSuite's other scheme, token-based authentication (TBA), is an OAuth 1.0a-style per-request signed Authorization header; this pack format injects a stored header value verbatim and the connector's only signing mode is aws-v4, so TBA is not expressible in this pack today: a deployment that must use TBA cannot wire it through this pack and must not fake it by storing a static TBA header, because a TBA signature is computed per request and a stored one is not a valid credential.
Download the complete package JSON for exact network allowlists, credential requirements, exclusions, and setup notes. Read these requirements before installation.
The full documentation review record is supplied in the evaluation package. The evaluation package runs in your environment and comes only with the paid design partnership. This page reproduces the source links and review block; the full record is available for evaluation. Discuss a design partnership to inspect it before installation.
Review block
This section reproduces the review block recorded in the pack file. The evidence and approval record is separate: for a reviewed pack, it is in the evaluation materials and in the release binary's embedded assets.
Review completed: 2026-09-22
15 sources, retrieved 2026-09-21
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_164337045826.html (retrieved 2026-09-21)
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_164484956387.html (retrieved 2026-09-21)
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_161165602348.html (retrieved 2026-09-21)
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_161581923822.html (retrieved 2026-09-21)
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_1546938065.html (retrieved 2026-09-21)
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_0504060740.html (retrieved 2026-09-21)
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_157780312610.html (retrieved 2026-09-21)
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_162730264820.html (retrieved 2026-09-21)
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_1540391670.html (retrieved 2026-09-21)
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_156414087576.html (retrieved 2026-09-21)
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_0728114850.html (retrieved 2026-09-21)
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_0504060412.html (retrieved 2026-09-21)
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_1545141395.html (retrieved 2026-09-21)
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_162790605110.html (retrieved 2026-09-21)
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_4267258715.html (retrieved 2026-09-21)
Current documentation links are navigation aids. They do not change the package, its historical sources or its review date. Review dates describe a documentation review, not a live integration test. No package is provider-endorsed or yet tested against a live provider tenant.
Release identity
SHA-256 of the pack file bytes: 4c0e3bbbb11ffa209915d607b5aa766a129ff7de62a183a1b9b6dff1e4db2575
Distributable: yes, digest matches the release manifest. Editing a package changes its release identity. A deployment plan checks its own file digests; it does not restore reviewed status or authenticate approval.