{
  "openapi": "3.1.0",
  "info": {
    "title": "Oracle Fusion Cloud ERP — Integration API",
    "version": "11.13.18.05",
    "description": "The Oracle Fusion simulator exposes a subset of the Oracle Fusion Cloud ERP Financials integration surface. It mirrors Oracle's REST (fscmRestApi) and SOAP endpoints, payload shapes, response envelopes and error codes so an external application can integrate against it using the same code paths it would use against a real Oracle Fusion instance.\n\nThis simulator follows the externally observable integration patterns of Oracle Fusion Cloud ERP. It does NOT implement the full Oracle Financials feature set. Only the resources, operations and query parameters listed below are supported; anything else should be assumed unimplemented.\n\nEvery request targets a specific simulator environment. Replace the `{environmentKey}` server variable with the environment key issued to your integration.\n\n## SOAP services\n\n- **InvoiceService** — SOAP 1.1. Endpoint: `/InvoiceService`. WSDL: `/InvoiceService?WSDL`. Operations: createSimpleInvoice. Authentication: WS-Security UsernameToken (PasswordText profile).\n\nSOAP operations are not represented in the OpenAPI path list because OpenAPI models REST resources only. Retrieve each service's WSDL for the full SOAP contract.",
    "contact": {
      "name": "Documentation",
      "url": "https://erplab.cloud/api/public/oracle-fusion/docs.md"
    }
  },
  "externalDocs": {
    "description": "Oracle Fusion simulator documentation as Markdown: capability matrix with support status, error reference, workflows, and the parts a schema cannot express. Requires no JavaScript.",
    "url": "https://erplab.cloud/api/public/oracle-fusion/docs.md"
  },
  "servers": [
    {
      "url": "https://erplab.cloud/sim/{environmentKey}",
      "description": "Simulator environment for a single integration tenant.",
      "variables": {
        "environmentKey": {
          "default": "env_your_environment_key",
          "description": "Immutable environment identifier (format: env_ followed by lowercase hex/base32 characters). Obtain it from your integration console; it is not a credential."
        }
      }
    }
  ],
  "tags": [
    {
      "name": "OAuth",
      "description": "Access-token issuance for REST calls."
    },
    {
      "name": "ReceivablesInvoice",
      "description": "Create, retrieve, list, partially update and delete Receivables (AR) invoices, read their lines and installments, and re-cut the payment schedule with the splitInstallments action. There is no completion step: an invoice is Complete when POST returns, and /action/complete answers 404 — this line said the resource completes invoices until 2026-08-04, three rows above an operations table saying the opposite."
    },
    {
      "name": "Contact",
      "description": "Read customer contacts. Oracle Fusion FINANCIALS has no contacts resource - Oracle serves contacts from the CX family, and so does this simulator. A contact is a PERSON party with its own PartyId; email and phone are ContactPoint children, one per communication type. The Financials path /fscmRestApi/resources/.../contacts is not a resource of Oracle Financials and answers 404, exactly as a real pod does."
    },
    {
      "name": "StandardReceipt",
      "description": "Record a payment collected outside the application. The external platform creates a Standard Receipt carrying remittance references that identify the transaction being paid; a separate asynchronous process, Apply Receipts Using AutoMatch, decides what it applies to. Creating a receipt never applies it."
    },
    {
      "name": "ReceivablesCreditMemo",
      "description": "Oracle's credit memos. Read-only here. Credit memos share the {CustomerTransactionId} id space with invoices and live alongside them, but Oracle serves them as a SEPARATE resource with its own attribute names - so a credit memo never appears under /receivablesInvoices, and reading one there answers 404. If you are reconciling a customer's balance, sync both resources."
    },
    {
      "name": "ReceivablesAdjustment",
      "description": "Oracle's receivables adjustments - a manual increase or decrease applied to a transaction or one of its installments. READ-ONLY, and that is Oracle's design rather than a gap here: Oracle publishes only Get all and Get one, with no create, update or delete. Read together with the fact that Oracle publishes no operation to APPLY a credit memo, it means there is no published REST call that lowers a transaction's balance - here or on a real pod. Adjustments are Receivables processing that the REST surface reports and does not accept. The same rows are also visible per customer through the transactionAdjustments child of the account-activity resources, which is a narrower window on the same entity."
    },
    {
      "name": "ReceiptMethod",
      "description": "Oracle's receipt methods. Read-only. Use it to discover the exact values accepted as ReceiptMethod when creating a standard receipt - posting a method that is not configured for your tenant is rejected with AR_INVAL_RECEIPT_MTH_ID, and this resource is how you find the accepted set."
    },
    {
      "name": "CustomerAccountSitesLOV",
      "description": "Oracle's customer-account-sites list of values. One row per customer account SITE USE, keyed by SiteUseId. Use it to discover the site names that may be passed as BillToSite when creating an invoice."
    },
    {
      "name": "ReceivablesCustomerAccountActivity",
      "description": "Read a customer's receivables position — one row per customer ACCOUNT — and, through the standardReceiptApplications child, the individual receipt applications behind it. This is the only external route to receipt applications, and therefore the way to confirm that a payment landed on the invoice you expected."
    },
    {
      "name": "ReceivablesCustomerAccountSiteActivity",
      "description": "Read a customer's receivables position — one row per customer account SITE (bill-to site use), so a customer with three bill-to sites has three rows — and, through the standardReceiptApplications child, the individual receipt applications behind it. This is the only external route to receipt applications, and therefore the way to confirm that a payment landed on the invoice you expected."
    }
  ],
  "paths": {
    "/fscmRestApi/resources/11.13.18.05/receivablesInvoices": {
      "get": {
        "operationId": "listReceivablesInvoice",
        "summary": "List invoices",
        "description": "Returns a paged collection wrapped in the Oracle envelope (items, count, hasMore, limit, offset, links, optional totalResults).",
        "tags": [
          "ReceivablesInvoice"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression (e.g. InvoiceStatus='Complete' and InvoiceBalanceAmount>0). ONLY the attributes Oracle marks queryable can be filtered: CustomerTransactionId, TransactionNumber, InvoiceStatus, InvoiceBalanceAmount, BillToPartyId, DeliveryMethod, Email, LastUpdateDate. Filtering on any other attribute is refused 400 — Oracle publishes a per-attribute queryable flag — named `queryable` in a real pod's `<resource>/describe` response, and republished here as the OpenAPI vendor extension `x-queryable` because OpenAPI requires extensions to be `x-` prefixed — and a real pod rejects the rest, so TransactionDate, DueDate, EnteredAmount, BillToCustomerNumber, InvoiceCurrencyCode, PaymentTerms, TransactionType, TransactionSource and BusinessUnit are NOT filterable here either. Supports =, !=, >, >=, <, <=, LIKE, IN and AND. Oracle documents the format as ?q=expression1;expression2 with 'and' inside an expression, and semicolon is what a real pod accepts — prefer it. OR is accepted here as a simulator extension and is NOT documented by Oracle for this resource, so a filter relying on it may not port to a real Fusion instance. A comma is not a separator in either. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered — read that rather than guessing, and note it describes THIS API: where it is narrower than Oracle the refusal message says so explicitly.",
            "schema": {
              "type": "string"
            },
            "example": "InvoiceStatus='Complete';InvoiceBalanceAmount>0"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "CustomerTransactionId,TransactionNumber,EnteredAmount"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default CustomerTransactionId:desc).",
            "schema": {
              "type": "string"
            },
            "example": "TransactionDate:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section from the response. The collection envelope stays: count, hasMore, limit, offset and totalResults are still returned.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "expand",
            "in": "query",
            "required": false,
            "description": "Comma-separated child accessors to embed. Supports `receivablesInvoiceLines` and `receivablesInvoiceInstallments`, alone or together. An unrecognised child is refused with 400 rather than silently ignored. Expanding installments is the cheapest way to tell a PAID invoice from a VOIDED one in a single call: both show InvoiceBalanceAmount 0, but only a settled invoice has AmountPaid or InstallmentAmountCredited accounting for the money.",
            "schema": {
              "type": "string"
            },
            "example": "receivablesInvoiceLines,receivablesInvoiceInstallments"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "Named finder. The only one implemented is PrimaryKey;CustomerTransactionId=…. Oracle documents one more on this resource, invoiceSearch, which is refused 400 naming itself as unimplemented; filter with q=TransactionNumber='…' instead.",
            "schema": {
              "type": "string"
            },
            "example": "PrimaryKey;CustomerTransactionId=300100000000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesInvoiceCollection"
                },
                "example": {
                  "items": [
                    {
                      "CustomerTransactionId": 300100000000001,
                      "TransactionNumber": "INV-300100000000001",
                      "TransactionDate": "2026-06-01",
                      "BusinessUnit": "Vision Operations",
                      "EnteredAmount": 1250,
                      "InvoiceBalanceAmount": 1250,
                      "InvoiceStatus": "Complete",
                      "links": [
                        {
                          "rel": "self",
                          "href": "{REST_BASE}/receivablesInvoices/300100000000001"
                        }
                      ]
                    }
                  ],
                  "count": 1,
                  "hasMore": true,
                  "limit": 25,
                  "offset": 0,
                  "totalResults": 80,
                  "links": [
                    {
                      "rel": "self",
                      "href": "{REST_BASE}/receivablesInvoices",
                      "kind": "collection"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid q, orderBy or finder",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createReceivablesInvoice",
        "summary": "Create an invoice",
        "description": "Creates a COMPLETE invoice with one or more lines, which is Oracle's default and the only value accepted on POST. Header and lines are inserted atomically; if line insertion fails the header is rolled back. The payment schedule is built server-side, so the invoice has at least one installment the moment it exists.",
        "tags": [
          "ReceivablesInvoice"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivablesInvoice"
              },
              "example": {
                "BusinessUnit": "Vision Operations",
                "TransactionType": "Invoice",
                "TransactionSource": "MANUAL",
                "BillToCustomerNumber": "0001001",
                "InvoiceCurrencyCode": "USD",
                "TransactionDate": "2026-06-25",
                "PaymentTerms": "IMMEDIATE",
                "DeliveryMethod": "E-Mail",
                "BillToContact": "John Davis",
                "Email": "ap@vision-operations.example",
                "receivablesInvoiceLines": [
                  {
                    "LineNumber": 1,
                    "Description": "Consulting",
                    "Quantity": 10,
                    "UnitSellingPrice": 125
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created. Carries a Location header with the canonical URI of the new invoice, and mirrors the GET response shape.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesInvoice"
                },
                "example": {
                  "CustomerTransactionId": 300100000000123,
                  "TransactionNumber": "INV-300100000000123",
                  "InvoiceStatus": "Incomplete",
                  "EnteredAmount": 1250,
                  "InvoiceBalanceAmount": 1250,
                  "BillToSite": "HQ — Berlin",
                  "BillToContact": "John Davis",
                  "DeliveryMethod": "E-Mail",
                  "Email": "ap@vision-operations.example",
                  "links": [
                    {
                      "rel": "self",
                      "href": "{REST_BASE}/receivablesInvoices/300100000000123"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "AR-1000 missing attributes, AR-1001 no lines, AR-1010 unknown customer, AR-1030 undefined or disabled InvoiceCurrencyCode, REST-01007 invalid JSON",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesInvoices/{CustomerTransactionId}": {
      "get": {
        "operationId": "getReceivablesInvoice",
        "summary": "Retrieve one invoice",
        "description": "Returns a single invoice. An invoice belonging to another environment is indistinguishable from one that does not exist — both answer 404. `expand` works here exactly as it does on the collection: `expand=receivablesInvoiceLines,receivablesInvoiceInstallments`, or `expand=all`. An expanded child is byte-identical to the same row read from its own child endpoint, and a child with no rows comes back as an empty array rather than being omitted. Until 2026-08-05 this operation REFUSED expand, which was narrower than Oracle — the operation page documents it — and that refusal was published as the contract while this very example used it.",
        "tags": [
          "ReceivablesInvoice"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "CustomerTransactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "CustomerTransactionId,TransactionNumber,EnteredAmount"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section from the response. The collection envelope stays: count, hasMore, limit, offset and totalResults are still returned.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "expand",
            "in": "query",
            "required": false,
            "description": "Comma-separated child accessors to embed. Supports `receivablesInvoiceLines` and `receivablesInvoiceInstallments`, alone or together. An unrecognised child is refused with 400 rather than silently ignored. Expanding installments is the cheapest way to tell a PAID invoice from a VOIDED one in a single call: both show InvoiceBalanceAmount 0, but only a settled invoice has AmountPaid or InstallmentAmountCredited accounting for the money.",
            "schema": {
              "type": "string"
            },
            "example": "receivablesInvoiceLines,receivablesInvoiceInstallments"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesInvoice"
                }
              }
            }
          },
          "400": {
            "description": "REST-01002 — CustomerTransactionId is not numeric",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "AR-7041 — invoice not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "updateReceivablesInvoice",
        "summary": "Partially update an invoice",
        "description": "Updates exactly three attributes — InvoiceStatus, PaymentTerms and TransactionDate — which is Oracle's whole PATCH surface on this resource: \"You can update only the InvoiceStatus, PaymentTerms, and TransactionDate attributes.\" Any other attribute in the body is refused with 400 AR-1020 naming it, never ignored. InvoiceStatus accepts Complete, Incomplete or Frozen. Changing PaymentTerms re-derives the installment schedule, and is refused when the invoice is posted to GL, has receipt applications, or the customer profile disables term overrides. This said only \"updates mutable fields\", which named none of them.\n\n- Updatable: InvoiceStatus, PaymentTerms, TransactionDate. Oracle 26B allows only these three; anything else returns AR-1020. Set BusinessUnit, TransactionType, TransactionSource, InvoiceCurrencyCode, BillToSite, BillToContact, DeliveryMethod and Email on create — they cannot be changed afterwards.\n- Read-only: CustomerTransactionId, TransactionNumber, InvoiceBalanceAmount, EnteredAmount.\n- Reassigning the bill-to customer through PATCH is not supported in this phase.\n- Recipient resolution: setting Email to null with a valid BillToContact re-derives the delivery email from the contact. Setting Email explicitly always wins.\n- DeliveryMethod must be one of E-Mail, Paper, XML.",
        "tags": [
          "ReceivablesInvoice"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "CustomerTransactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivablesInvoice"
              },
              "example": {
                "PaymentTerms": "NET30",
                "TransactionDate": "2026-07-25"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesInvoice"
                }
              }
            }
          },
          "400": {
            "description": "AR-1020 — read-only attribute, or REST-01002 non-numeric CustomerTransactionId",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "AR-7041 — invoice not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteReceivablesInvoice",
        "summary": "Delete an invoice",
        "description": "Permanently deletes the invoice together with its lines and installments. Returns 204 with NO response body. This is irreversible and there is no undo — the simulator keeps no copy. An invoice that has receipt applications is refused with 400 AR_TRX_DELETE_NOT_ALLOWED rather than silently unapplied, because deleting it would destroy the record of where a customer's money went; unapply first. Oracle states no preconditions for this operation, so that restriction is this simulator's conservative choice and is recorded as unverified.",
        "tags": [
          "ReceivablesInvoice"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "CustomerTransactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Deleted. No response body."
          },
          "400": {
            "description": "AR_TRX_DELETE_NOT_ALLOWED — the invoice has receipt applications; or REST-01002, CustomerTransactionId is not numeric",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01003 — no such invoice in this environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesInvoices/{CustomerTransactionId}/child/receivablesInvoiceLines": {
      "post": {
        "operationId": "post_receivablesInvoiceLinesReceivablesInvoice",
        "summary": "Create a receivables invoice line",
        "description": "Adds a line to an existing invoice - Oracle's documented Create on this child, and the way an invoice's amount is RAISED. The invoice total moves by Quantity x UnitSellingPrice, and the increase is added to the last open installment so that every installment keeps its identity and any receipt applied to it is undisturbed; when every installment is already closed, a new one carries the increase. An Incomplete invoice has no schedule, so nothing is allocated and the schedule is derived when it completes. Accepts Description, Quantity, UnitSellingPrice and LineNumber; anything else is refused by name. There is no delete and no update on this child, in Oracle or here, so an amount is LOWERED with a credit memo rather than by removing a line.",
        "tags": [
          "ReceivablesInvoice"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "CustomerTransactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivablesInvoice"
              },
              "example": {
                "Description": "Additional consulting",
                "Quantity": 2,
                "UnitSellingPrice": 125
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesInvoiceLine"
                }
              }
            }
          },
          "400": {
            "description": "Unsupported attribute, or a line not worth a positive amount",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "No such invoice in this environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "409": {
            "description": "The transaction does not accept lines (a void, for example)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      },
      "get": {
        "operationId": "list_receivablesInvoiceLinesReceivablesInvoice",
        "summary": "List invoice lines (child collection)",
        "description": "Returns the lines for one invoice, in LineNumber order, wrapped in the same envelope as the parent list. To read a single line, use the item read below - it returns the same row this collection would, byte for byte. q filters on CustomerTransactionLineId ONLY: Oracle marks seven attributes queryable on this child and this simulator emits one of them, and - the part that matters - LineNumber, Description, Quantity, UnitSellingPrice and LineAmount are NOT queryable in Oracle. Filtering on those is refused here because it fails on a real pod too.",
        "tags": [
          "ReceivablesInvoice"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "CustomerTransactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression (e.g. InvoiceStatus='Complete' and InvoiceBalanceAmount>0). ONLY the attributes Oracle marks queryable can be filtered: CustomerTransactionId, TransactionNumber, InvoiceStatus, InvoiceBalanceAmount, BillToPartyId, DeliveryMethod, Email, LastUpdateDate. Filtering on any other attribute is refused 400 — Oracle publishes a per-attribute queryable flag — named `queryable` in a real pod's `<resource>/describe` response, and republished here as the OpenAPI vendor extension `x-queryable` because OpenAPI requires extensions to be `x-` prefixed — and a real pod rejects the rest, so TransactionDate, DueDate, EnteredAmount, BillToCustomerNumber, InvoiceCurrencyCode, PaymentTerms, TransactionType, TransactionSource and BusinessUnit are NOT filterable here either. Supports =, !=, >, >=, <, <=, LIKE, IN and AND. Oracle documents the format as ?q=expression1;expression2 with 'and' inside an expression, and semicolon is what a real pod accepts — prefer it. OR is accepted here as a simulator extension and is NOT documented by Oracle for this resource, so a filter relying on it may not port to a real Fusion instance. A comma is not a separator in either. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered — read that rather than guessing, and note it describes THIS API: where it is narrower than Oracle the refusal message says so explicitly.",
            "schema": {
              "type": "string"
            },
            "example": "InvoiceStatus='Complete';InvoiceBalanceAmount>0"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "CustomerTransactionId,TransactionNumber,EnteredAmount"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default CustomerTransactionId:desc).",
            "schema": {
              "type": "string"
            },
            "example": "TransactionDate:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section from the response. The collection envelope stays: count, hasMore, limit, offset and totalResults are still returned.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "Named finder. The only one implemented is PrimaryKey;CustomerTransactionId=…. Oracle documents one more on this resource, invoiceSearch, which is refused 400 naming itself as unimplemented; filter with q=TransactionNumber='…' instead.",
            "schema": {
              "type": "string"
            },
            "example": "PrimaryKey;CustomerTransactionId=300100000000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesInvoiceLineCollection"
                }
              }
            }
          },
          "400": {
            "description": "REST-01002 — CustomerTransactionId is not numeric, or a query parameter this child does not implement was sent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "AR-7041 — parent invoice not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesInvoices/{CustomerTransactionId}/child/receivablesInvoiceLines/{CustomerTransactionLineId}": {
      "get": {
        "operationId": "get_receivablesInvoiceLinesReceivablesInvoice",
        "summary": "Retrieve one invoice line",
        "description": "Returns one line of the parent invoice. The row is identical to the one the child collection returns for the same key. Oracle documents five parameters on this operation and none of the collection ones, so q, limit, offset, orderBy, finder and totalResults are refused by name here rather than ignored. Until 2026-08-10 this path was not implemented and answered 404 naming itself; before 2026-08-04 it ignored the key entirely and answered 200 with the WHOLE collection.",
        "tags": [
          "ReceivablesInvoice"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "CustomerTransactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "CustomerTransactionLineId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "CustomerTransactionId,TransactionNumber,EnteredAmount"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section from the response. The collection envelope stays: count, hasMore, limit, offset and totalResults are still returned.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesInvoiceLine"
                }
              }
            }
          },
          "400": {
            "description": "REST-01003 — a query parameter this operation does not implement was sent (expand and dependency are documented by Oracle here and unimplemented)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "AR-7041 / AR-7043 — invoice not found, or that line does not belong to this invoice",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesInvoices/{CustomerTransactionId}/child/receivablesInvoiceInstallments": {
      "get": {
        "operationId": "list_receivablesInvoiceInstallmentsReceivablesInvoice",
        "summary": "List installments (child collection)",
        "description": "Returns the payment schedules (installments) for one invoice, ordered by Sequence ascending. Every invoice has at least one installment — a single-installment invoice mirrors the invoice total and due date.",
        "tags": [
          "ReceivablesInvoice"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "CustomerTransactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression (e.g. InvoiceStatus='Complete' and InvoiceBalanceAmount>0). ONLY the attributes Oracle marks queryable can be filtered: CustomerTransactionId, TransactionNumber, InvoiceStatus, InvoiceBalanceAmount, BillToPartyId, DeliveryMethod, Email, LastUpdateDate. Filtering on any other attribute is refused 400 — Oracle publishes a per-attribute queryable flag — named `queryable` in a real pod's `<resource>/describe` response, and republished here as the OpenAPI vendor extension `x-queryable` because OpenAPI requires extensions to be `x-` prefixed — and a real pod rejects the rest, so TransactionDate, DueDate, EnteredAmount, BillToCustomerNumber, InvoiceCurrencyCode, PaymentTerms, TransactionType, TransactionSource and BusinessUnit are NOT filterable here either. Supports =, !=, >, >=, <, <=, LIKE, IN and AND. Oracle documents the format as ?q=expression1;expression2 with 'and' inside an expression, and semicolon is what a real pod accepts — prefer it. OR is accepted here as a simulator extension and is NOT documented by Oracle for this resource, so a filter relying on it may not port to a real Fusion instance. A comma is not a separator in either. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered — read that rather than guessing, and note it describes THIS API: where it is narrower than Oracle the refusal message says so explicitly.",
            "schema": {
              "type": "string"
            },
            "example": "InvoiceStatus='Complete';InvoiceBalanceAmount>0"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "CustomerTransactionId,TransactionNumber,EnteredAmount"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default CustomerTransactionId:desc).",
            "schema": {
              "type": "string"
            },
            "example": "TransactionDate:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section from the response. The collection envelope stays: count, hasMore, limit, offset and totalResults are still returned.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "Named finder. The only one implemented is PrimaryKey;CustomerTransactionId=…. Oracle documents one more on this resource, invoiceSearch, which is refused 400 naming itself as unimplemented; filter with q=TransactionNumber='…' instead.",
            "schema": {
              "type": "string"
            },
            "example": "PrimaryKey;CustomerTransactionId=300100000000001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesInvoiceInstallmentCollection"
                },
                "example": {
                  "items": [
                    {
                      "InstallmentId": 300100000099001,
                      "InstallmentSequenceNumber": 1,
                      "InstallmentDueDate": "2026-07-25",
                      "OriginalAmount": 500,
                      "InstallmentBalanceDue": 0,
                      "AmountPaid": 500,
                      "InstallmentAmountAdjusted": 0,
                      "InstallmentAmountCredited": 0,
                      "PendingAdjustmentAmount": 0,
                      "DisputeAmount": 0,
                      "DisputeDate": null,
                      "InstallmentStatus": "CL",
                      "InstallmentClosedDate": "2026-07-10",
                      "InstallmentGLClosedDate": "2026-07-10",
                      "PaymentDaysLate": 0,
                      "LastUpdateDate": "2026-07-10T12:00:00.000+0000"
                    },
                    {
                      "InstallmentId": 300100000099002,
                      "InstallmentSequenceNumber": 2,
                      "InstallmentDueDate": "2026-08-25",
                      "OriginalAmount": 500,
                      "InstallmentBalanceDue": 500,
                      "AmountPaid": 0,
                      "InstallmentAmountAdjusted": 0,
                      "InstallmentAmountCredited": 0,
                      "PendingAdjustmentAmount": 0,
                      "DisputeAmount": 250,
                      "DisputeDate": "2026-07-30",
                      "InstallmentStatus": "OP",
                      "InstallmentClosedDate": null,
                      "InstallmentGLClosedDate": null,
                      "PaymentDaysLate": 0,
                      "LastUpdateDate": "2026-06-25T12:00:00.000+0000"
                    }
                  ],
                  "count": 2,
                  "hasMore": false,
                  "limit": 2,
                  "offset": 0
                }
              }
            }
          },
          "400": {
            "description": "REST-01000 / REST-01002 — invalid q expression, non-queryable attribute, non-numeric CustomerTransactionId, or a query parameter this child does not implement",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "AR-7041 — parent invoice not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesInvoices/{CustomerTransactionId}/child/receivablesInvoiceInstallments/{InstallmentId}": {
      "get": {
        "operationId": "get_receivablesInvoiceInstallmentsReceivablesInvoice",
        "summary": "Retrieve one installment",
        "description": "Returns one installment of the parent invoice.",
        "tags": [
          "ReceivablesInvoice"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "CustomerTransactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "InstallmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "CustomerTransactionId,TransactionNumber,EnteredAmount"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section from the response. The collection envelope stays: count, hasMore, limit, offset and totalResults are still returned.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesInvoiceInstallment"
                }
              }
            }
          },
          "400": {
            "description": "REST-01002 — CustomerTransactionId or InstallmentId is not numeric",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "AR-7041 / AR-7042 — invoice or installment not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesInvoices/{CustomerTransactionId}/action/splitInstallments": {
      "post": {
        "operationId": "action_splitInstallmentsReceivablesInvoice",
        "summary": "Split installments (action)",
        "description": "Rewrites the invoice's payment schedule and returns the NEW installment collection — not the invoice. The request body is `{ \"installmentPayload\": [ … ] }`; an invoice body is refused with 400. The invoice must be COMPLETE (else 409 AR-2010). Installments are matched by InstallmentSequenceNumber and updated IN PLACE, so applied receipts stay attached and APPLIED CASH IS REALLOCATED across the new amounts — it is not refused. The refusals are per INSTALLMENT, not per invoice: an installment cannot be set below what has already settled it (paid, credited or adjusted), and an installment closed BY settlement cannot have its amount or due date changed. Both answer 409 AR-2012 naming the installment. An installment closed only because it was set to zero can be changed again. An installment cannot be deleted: name every existing one and set to zero any you want emptied.\n\n- Sum of OriginalAmount values must equal the invoice EnteredAmount (4dp tolerance).\n- Every InstallmentDueDate must be on or after the invoice TransactionDate.\n- Sequence numbers must be contiguous 1..N.\n- New total amount cannot be less than the amount already paid against the invoice.\n- Only invoices in InvoiceStatus=Complete are eligible (AR-2010).\n- Splitting is refused per INSTALLMENT rather than per invoice: an installment may not go below what has already settled it (paid, credited or adjusted), and one closed BY settlement may not change amount or due date — both 409 AR-2012, naming the installment. An invoice merely HAVING an applied receipt does not block a split; the cash is reallocated across the new amounts. This bullet said any applied receipt was refused until 2026-08-13, which was stricter than Oracle and wrong in the direction that matters: it described a guard an integrator did not need and hid the per-installment floor that actually applies.",
        "tags": [
          "ReceivablesInvoice"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "CustomerTransactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SplitInstallmentsRequest"
              },
              "example": {
                "installmentPayload": [
                  {
                    "InstallmentSequenceNumber": "1",
                    "OriginalAmount": "500.00",
                    "InstallmentDueDate": "2026-07-25"
                  },
                  {
                    "OriginalAmount": "500.00",
                    "InstallmentDueDate": "2026-08-25"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK — returns the new installment collection",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesInvoiceInstallmentCollection"
                }
              }
            }
          },
          "400": {
            "description": "AR-1040 — invalid installment split, or a body without installmentPayload (see o:errorDetails)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "AR-7041 — invoice not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "409": {
            "description": "AR-2010 / AR-2012 — invalid invoice state for split",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/crmRestApi/resources/11.13.18.05/contacts": {
      "get": {
        "operationId": "listContact",
        "summary": "List contacts",
        "description": "Returns a paged collection wrapped in the Oracle envelope (items, count, hasMore, limit, offset, links, optional totalResults).",
        "tags": [
          "Contact"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Supported fields: PartyId, PartyNumber, ContactName, FirstName, LastName, JobTitle, EmailAddress, PartyStatus, LastUpdateDate. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered — read that rather than guessing, and note it describes THIS API: where it is narrower than Oracle the refusal message says so explicitly.",
            "schema": {
              "type": "string"
            },
            "example": "PartyStatus='A'"
          },
          {
            "name": "expand",
            "in": "query",
            "required": false,
            "description": "Include the ContactPoint child inline instead of a link.",
            "schema": {
              "type": "string"
            },
            "example": "ContactPoint"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "PartyNumber,ContactName,EmailAddress"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default PartyId:asc).",
            "schema": {
              "type": "string"
            },
            "example": "LastName:asc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section from the response. The collection envelope stays: count, hasMore, limit, offset and totalResults are still returned.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "Named finder, as Oracle documents them on this resource. Supported: PrimaryKey;PartyId=… and ContactPartyNumberRF;PartyNumber=…. Any other finder is refused rather than ignored.",
            "schema": {
              "type": "string"
            },
            "example": "ContactPartyNumberRF;PartyNumber=CDRM-300100000000100"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactCollection"
                }
              }
            }
          },
          "400": {
            "description": "Invalid q, finder, orderBy or other query parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token, or credential issued for a different environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/crmRestApi/resources/11.13.18.05/contacts/{PartyNumber}": {
      "get": {
        "operationId": "getContact",
        "summary": "Retrieve one contact",
        "description": "Returns a single contact with its party and (if linked) customer-account context. Keyed by PartyNumber (e.g. CDRM-300100000000100), the alternate key Oracle uses on the CX item path — NOT by PartyId, which answers 404. Add ?expand=ContactPoint to embed the communication channels.",
        "tags": [
          "Contact"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "PartyNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expand",
            "in": "query",
            "required": false,
            "description": "Include the ContactPoint child inline instead of a link.",
            "schema": {
              "type": "string"
            },
            "example": "ContactPoint"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "PartyNumber,ContactName,EmailAddress"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section from the response. The collection envelope stays: count, hasMore, limit, offset and totalResults are still returned.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token, or a credential issued for a different environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01404 — contact not found in this environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/crmRestApi/resources/11.13.18.05/contacts/{PartyNumber}/child/ContactPoint": {
      "get": {
        "operationId": "list_ContactPointContact",
        "summary": "List a contact's communication channels (child collection)",
        "description": "Returns one row per communication channel for the contact: one per EMAIL or PHONE. The same rows ?expand=ContactPoint embeds in the parent.",
        "tags": [
          "Contact"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "PartyNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "PartyNumber,ContactName,EmailAddress"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default PartyId:asc).",
            "schema": {
              "type": "string"
            },
            "example": "LastName:asc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section from the response. The collection envelope stays: count, hasMore, limit, offset and totalResults are still returned.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "Named finder, as Oracle documents them on this resource. Supported: PrimaryKey;PartyId=… and ContactPartyNumberRF;PartyNumber=…. Any other finder is refused rather than ignored.",
            "schema": {
              "type": "string"
            },
            "example": "ContactPartyNumberRF;PartyNumber=CDRM-300100000000100"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactPointCollection"
                }
              }
            }
          },
          "400": {
            "description": "A query parameter this child does not implement was sent.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token, or a credential issued for a different environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01404 — contact not found in this environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/crmRestApi/resources/11.13.18.05/contacts/{PartyNumber}/child/ContactPoint/{ContactPointId}": {
      "get": {
        "operationId": "get_ContactPointContact",
        "summary": "Retrieve one communication channel",
        "description": "Returns one communication channel of the contact.",
        "tags": [
          "Contact"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "PartyNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ContactPointId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "PartyNumber,ContactName,EmailAddress"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section from the response. The collection envelope stays: count, hasMore, limit, offset and totalResults are still returned.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactPoint"
                }
              }
            }
          },
          "400": {
            "description": "REST-01400 — ContactPointId is not numeric.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token, or a credential issued for a different environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01404 — contact or contact point not found in this environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/standardReceipts": {
      "post": {
        "operationId": "createStandardReceipt",
        "summary": "Create a standard receipt",
        "description": "Validates the request, creates the receipt and any nested remittance references, commits, and returns. The receipt is left UNAPPLIED, or UNIDENTIFIED when no customer information was supplied, and becomes eligible for the next Apply Receipts Using AutoMatch run. No application is made during this request.\n\n- Requires the AR_CREATE_RECEIVABLES_RECEIPT_PRIV privilege.\n- A duplicate receipt number, date, amount and customer returns AR_RCP_DUP_NUM. Send Upsert-Mode: true to receive the existing receipt instead.\n- InstallmentId, PaymentScheduleId and InstallmentNumber are not part of the request and are rejected.\n- Provider-specific attributes such as externalPaymentId or paymentId are rejected. Carry your reference in ReceiptNumber, StructuredPaymentReference, Comments or a flexfield.",
        "tags": [
          "StandardReceipt"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StandardReceipt"
              },
              "example": {
                "ReceiptNumber": "PAY-20260728-001",
                "ReceiptMethod": "Manual",
                "BusinessUnit": "Vision Operations",
                "CustomerAccountNumber": "0001001",
                "CustomerSite": "HQ — Berlin",
                "Amount": 500,
                "Currency": "USD",
                "ReceiptDate": "2026-07-28",
                "AccountingDate": "2026-07-28",
                "StructuredPaymentReference": "pi_3ABC123",
                "remittanceReferences": [
                  {
                    "ReceiptMatchBy": "Transaction Number",
                    "ReferenceNumber": "INV-300100000000001",
                    "ReferenceAmount": 500
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created. State is UNAPPLIED, or UNIDENTIFIED when no customer information was supplied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StandardReceipt"
                },
                "example": {
                  "StandardReceiptId": 300100169169023,
                  "ReceiptNumber": "PAY-20260728-001",
                  "ReceiptMethod": "Manual",
                  "BusinessUnit": "Vision Operations",
                  "CustomerAccountNumber": "0001001",
                  "CustomerSite": "HQ — Berlin",
                  "Amount": 500,
                  "Currency": "USD",
                  "ReceiptDate": "2026-07-28",
                  "State": "UNAPPLIED",
                  "Status": "CONFIRMED",
                  "UnappliedAmount": 500,
                  "StructuredPaymentReference": "pi_3ABC123",
                  "remittanceReferences": [
                    {
                      "RemittanceReferenceId": 300100153164605,
                      "ReceiptMatchBy": "Transaction Number",
                      "ReferenceNumber": "INV-300100000000001",
                      "ReferenceAmount": 500
                    }
                  ],
                  "links": []
                }
              }
            }
          },
          "400": {
            "description": "Validation failure. See o:errorCode for the Oracle condition.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "Missing the AR_CREATE_RECEIVABLES_RECEIPT_PRIV privilege.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      },
      "get": {
        "operationId": "listStandardReceipt",
        "summary": "List standard receipts",
        "description": "Returns a paginated collection with the standard Oracle envelope: items, count, hasMore, limit, offset, links.",
        "tags": [
          "StandardReceipt"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Filter expression. ONLY the attributes Oracle marks queryable can be filtered: StandardReceiptId, ReceiptNumber, ReceiptDate, CustomerAccountNumber, CustomerName, CustomerSite, BusinessUnit — all seven Oracle marks. The last three are NAMES on the wire and identifiers in the column, so each is resolved before it filters; an unknown name yields an empty collection rather than an error, and none of the three may be combined with OR. Anything else is refused 400 — Oracle publishes a per-attribute queryable flag — named `queryable` in a real pod's `<resource>/describe` response, and republished here as the OpenAPI vendor extension `x-queryable` because OpenAPI requires extensions to be `x-` prefixed — and a real pod rejects the rest, so State, Status, Amount, Currency, UnappliedAmount, ReceiptMethod, AccountingDate, Comments, DocumentNumber, MaturityDate, PostmarkDate, CreationDate, StructuredPaymentReference and LastUpdateDate are NOT filterable. Note the asymmetry with invoices: LastUpdateDate IS queryable there and is not here, so receipts have no watermark-based incremental sync in Oracle. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered — read that rather than guessing, and note it describes THIS API: where it is narrower than Oracle the refusal message says so explicitly.",
            "schema": {
              "type": "string"
            },
            "example": "CustomerAccountNumber='0001001'"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "Named finder, as documented by Oracle for this resource. PrimaryKey;StandardReceiptId=<id> finds one receipt by key. StandardReceiptsFinder;<var>=<val>[,<var>=<val>] searches; supported variables here are ReceiptNumber, ReceiptDate and CustomerAccountNumber. Oracle also documents BusinessUnit, CustomerName and CustomerSite on that finder — those are not implemented here and are rejected by name rather than ignored. An unsupported finder or variable returns 400, never a silently unfiltered collection.",
            "schema": {
              "type": "string"
            },
            "example": "StandardReceiptsFinder;ReceiptNumber=FIN-0001"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "StandardReceiptId,ReceiptNumber,State"
          },
          {
            "name": "expand",
            "in": "query",
            "required": false,
            "description": "Expand the remittanceReferences child collection.",
            "schema": {
              "type": "string"
            },
            "example": "remittanceReferences"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort specification.",
            "schema": {
              "type": "string"
            },
            "example": "ReceiptDate:desc"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "Strip links and envelope metadata.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Include the total row count.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StandardReceiptCollection"
                }
              }
            }
          },
          "400": {
            "description": "Malformed q expression or unknown field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_MANAGE_RECEIVABLES_RECEIPT_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/standardReceipts/{StandardReceiptId}": {
      "get": {
        "operationId": "getStandardReceipt",
        "summary": "Retrieve one standard receipt",
        "description": "Returns a single receipt. The remittanceReferences child is a LINK by default and is embedded only when ?expand=remittanceReferences is sent, as on the collection. This said the item read returns the receipt \"with its remittance references\", which described the behaviour before the unconditional inlining was removed — a real pod returns a link.",
        "tags": [
          "StandardReceipt"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "StandardReceiptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "StandardReceiptId,ReceiptNumber,State"
          },
          {
            "name": "expand",
            "in": "query",
            "required": false,
            "description": "Expand the remittanceReferences child collection.",
            "schema": {
              "type": "string"
            },
            "example": "remittanceReferences"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "Strip links and envelope metadata.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StandardReceipt"
                }
              }
            }
          },
          "400": {
            "description": "REST-01400 — StandardReceiptId is not numeric.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_MANAGE_RECEIVABLES_RECEIPT_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "No such receipt in this environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "updateStandardReceipt",
        "summary": "Update customer details",
        "description": "Updates customer detail attributes only: CustomerAccountNumber, CustomerBankAccountNumber, CustomerName, CustomerSite. Any other attribute is rejected. Assigning a customer to an UNIDENTIFIED receipt moves the amount from unidentified to unapplied and makes it eligible for AutoMatch.\n\n- Blocked on applied, approved, reversed, automatic, AP/AR netting, bill-to receivables, frozen and unaccounted receipts. Note the sequencing this implies: a receipt whose remittance reference matches an open transaction is applied by the next AutoMatch sweep, which can happen within seconds of the POST. \"Create a receipt then PATCH its customer details\" therefore reads as safe and is not — patch it before it is applied, or create it without a matching reference.\n- Amount, State, Status, UnappliedAmount and StandardReceiptId are never client-writable.",
        "tags": [
          "StandardReceipt"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "StandardReceiptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StandardReceipt"
              },
              "example": {
                "CustomerAccountNumber": "0001001",
                "CustomerSite": "HQ — Berlin"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StandardReceipt"
                }
              }
            }
          },
          "400": {
            "description": "Attribute not updatable, or the receipt is in a state that blocks customer updates.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_MANAGE_RECEIVABLES_RECEIPT_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "No such receipt.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteStandardReceipt",
        "summary": "Delete a standard receipt",
        "description": "Deletes a receipt that is still eligible for deletion.\n\n- A receipt with applications, or one that is accounted, frozen, reversed or automatic, cannot be deleted.\n- The receipt is never silently reversed or unapplied to make it deletable.",
        "tags": [
          "StandardReceipt"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "StandardReceiptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Deleted. No response body."
          },
          "400": {
            "description": "The receipt is not eligible for deletion.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_MANAGE_RECEIVABLES_RECEIPT_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "No such receipt.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/standardReceipts/{StandardReceiptId}/child/remittanceReferences": {
      "post": {
        "operationId": "post_remittanceReferencesStandardReceipt",
        "summary": "Create a remittance reference",
        "description": "Adds a remittance reference to an existing receipt, and returns the created reference with a Location header. The same objects can be supplied nested inside the original receipt POST under `remittanceReferences`. Adding one makes the receipt eligible for the next Apply Receipts Using AutoMatch run; it does not apply anything itself.",
        "tags": [
          "StandardReceipt"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "StandardReceiptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemittanceReference"
              },
              "example": {
                "ReceiptMatchBy": "Transaction Number",
                "ReferenceNumber": "INV-300100000000001",
                "ReferenceAmount": 500
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created. Carries a Location header with the canonical URI of the new reference.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemittanceReference"
                }
              }
            }
          },
          "400": {
            "description": "Validation failure, for example ReferenceNumber longer than 50 characters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_CREATE_RECEIVABLES_RECEIPT_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "No such receipt.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      },
      "get": {
        "operationId": "list_remittanceReferencesStandardReceipt",
        "summary": "List remittance references",
        "description": "Returns the remittance references on a receipt, in RemittanceReferenceId order.",
        "tags": [
          "StandardReceipt"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "StandardReceiptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Filter expression. ONLY the attributes Oracle marks queryable can be filtered: StandardReceiptId, ReceiptNumber, ReceiptDate, CustomerAccountNumber, CustomerName, CustomerSite, BusinessUnit — all seven Oracle marks. The last three are NAMES on the wire and identifiers in the column, so each is resolved before it filters; an unknown name yields an empty collection rather than an error, and none of the three may be combined with OR. Anything else is refused 400 — Oracle publishes a per-attribute queryable flag — named `queryable` in a real pod's `<resource>/describe` response, and republished here as the OpenAPI vendor extension `x-queryable` because OpenAPI requires extensions to be `x-` prefixed — and a real pod rejects the rest, so State, Status, Amount, Currency, UnappliedAmount, ReceiptMethod, AccountingDate, Comments, DocumentNumber, MaturityDate, PostmarkDate, CreationDate, StructuredPaymentReference and LastUpdateDate are NOT filterable. Note the asymmetry with invoices: LastUpdateDate IS queryable there and is not here, so receipts have no watermark-based incremental sync in Oracle. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered — read that rather than guessing, and note it describes THIS API: where it is narrower than Oracle the refusal message says so explicitly.",
            "schema": {
              "type": "string"
            },
            "example": "CustomerAccountNumber='0001001'"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "Named finder, as documented by Oracle for this resource. PrimaryKey;StandardReceiptId=<id> finds one receipt by key. StandardReceiptsFinder;<var>=<val>[,<var>=<val>] searches; supported variables here are ReceiptNumber, ReceiptDate and CustomerAccountNumber. Oracle also documents BusinessUnit, CustomerName and CustomerSite on that finder — those are not implemented here and are rejected by name rather than ignored. An unsupported finder or variable returns 400, never a silently unfiltered collection.",
            "schema": {
              "type": "string"
            },
            "example": "StandardReceiptsFinder;ReceiptNumber=FIN-0001"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "StandardReceiptId,ReceiptNumber,State"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort specification.",
            "schema": {
              "type": "string"
            },
            "example": "ReceiptDate:desc"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "Strip links and envelope metadata.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Include the total row count.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemittanceReferenceCollection"
                }
              }
            }
          },
          "400": {
            "description": "Malformed q expression, a non-queryable attribute, or a query parameter this child does not implement.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_MANAGE_RECEIVABLES_RECEIPT_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "No such receipt.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/standardReceipts/{StandardReceiptId}/child/remittanceReferences/{RemittanceReferenceId}": {
      "get": {
        "operationId": "get_remittanceReferencesStandardReceipt",
        "summary": "Retrieve one remittance reference",
        "description": "Returns a single remittance reference of the parent receipt.",
        "tags": [
          "StandardReceipt"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "StandardReceiptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "RemittanceReferenceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "StandardReceiptId,ReceiptNumber,State"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "Strip links and envelope metadata.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemittanceReference"
                }
              }
            }
          },
          "400": {
            "description": "REST-01400 — StandardReceiptId or RemittanceReferenceId is not numeric.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_MANAGE_RECEIVABLES_RECEIPT_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "No such reference.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCreditMemos": {
      "post": {
        "operationId": "createReceivablesCreditMemo",
        "summary": "Create a receivables credit memo",
        "description": "Creates a credit memo. Oracle marks three attributes required - BusinessUnit, TransactionDate and TransactionNumber - and the last is worth noting: a credit memo carries a number the CALLER supplies, where /receivablesInvoices generates one. BillToCustomerNumber is required here although Oracle marks it optional, because every transaction in this simulator is owned by a customer account and neither BillToCustomerName nor a site is modelled as a way to find one. Lines arrive as receivablesCreditMemoLines and each needs a positive LineAmountCredit. Note the names: a credit memo line is NOT an invoice line renamed - it is LineDescription where an invoice has Description, LineAmountCredit where an invoice has LineAmount, and LineQuantityCredit where an invoice has Quantity. Only LineNumber is required. EnteredAmount is derived from the lines and is read-only, exactly as an invoice's total is, and the header and its lines are written in one transaction so a memo can never exist without what its amount is made of. CreditMemoStatus is Complete on creation, which is Oracle's documented default. The memo is created UNAPPLIED and nothing here applies it to an invoice - Oracle publishes no REST operation that does, so there is no attribute for it in this body or in Oracle's.",
        "tags": [
          "ReceivablesCreditMemo"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivablesCreditMemo"
              },
              "example": {
                "BusinessUnit": "Vision Operations",
                "TransactionDate": "2026-08-12",
                "TransactionNumber": "CM-EXTERNAL-1001",
                "BillToCustomerNumber": "0001001",
                "CreditMemoCurrency": "USD",
                "CreditReason": "Damaged goods",
                "receivablesCreditMemoLines": [
                  {
                    "LineNumber": 1,
                    "LineAmountCredit": 250,
                    "LineDescription": "Damaged goods"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesCreditMemo"
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsupported attribute, or a line without a positive Amount.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      },
      "get": {
        "operationId": "listReceivablesCreditMemo",
        "summary": "List credit memos",
        "description": "Returns a paged collection wrapped in the Oracle envelope (items, count, hasMore, limit, offset, links, optional totalResults). Only credit memos - invoices are served by /receivablesInvoices and the two collections do not overlap.",
        "tags": [
          "ReceivablesCreditMemo"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Nine attributes are filterable here: CustomerTransactionId, TransactionNumber, TransactionDate, TransactionType, TransactionSource, BusinessUnit, CreditMemoCurrency, BillToCustomerNumber and BillToSite. Oracle marks fifteen, and the six this simulator does not model - AllowCompletion, CrossReference, DocumentNumber, PrimarySalesperson, PurchaseOrder and PurchaseOrderDate - are refused by name with the reason. Note that EnteredAmount, TransactionBalanceDue and CreditMemoCurrency are NOT symmetrical: the currency filters, the two amounts do not, because Oracle does not mark them queryable. Filtering on BillToCustomerNumber or BillToSite matches on the value you see on the wire - the account number and the site name - not on an internal id.",
            "schema": {
              "type": "string"
            },
            "example": "BillToCustomerNumber='1004'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "CustomerTransactionId,TransactionNumber,TransactionBalanceDue"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 - read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "25"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default CustomerTransactionId:desc). BillToCustomerNumber and BillToSite are refused as sort keys: they are resolved from other tables on read, so sorting would order by the underlying id while showing you a name.",
            "schema": {
              "type": "string"
            },
            "example": "TransactionDate:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array. A relation the response does not carry is simply absent.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "Named finder. PrimaryKey;CustomerTransactionId=... is implemented. Oracle also documents creditMemosFinder, which this simulator does not implement - it is refused by name rather than reported as unknown, so you can tell a missing feature from a typo.",
            "schema": {
              "type": "string"
            },
            "example": "PrimaryKey;CustomerTransactionId=300100000000073"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesCreditMemoCollection"
                }
              }
            }
          },
          "400": {
            "description": "Invalid q, finder or orderBy, or a filter on an attribute that is not queryable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCreditMemos/{CustomerTransactionId}": {
      "get": {
        "operationId": "getReceivablesCreditMemo",
        "summary": "Retrieve one credit memo",
        "description": "Returns a single credit memo. An INVOICE id answers 404 here rather than returning the row under credit memo attribute names - the id space is shared, the resources are not. `expand=receivablesCreditMemoLines` (or `expand=all`) embeds the lines, and an unrecognised child is refused by name rather than dropped; a memo with no lines expands to an empty array, because absent and empty mean different things to a caller.",
        "tags": [
          "ReceivablesCreditMemo"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "CustomerTransactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "CustomerTransactionId,TransactionNumber,TransactionBalanceDue"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array. A relation the response does not carry is simply absent.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "expand",
            "in": "query",
            "required": false,
            "description": "Comma-separated child accessors to embed on the ITEM read. `receivablesCreditMemoLines` is the one child this resource models, and `all` is accepted for it. An unrecognised child is refused 400 rather than silently ignored, because accepted-and-dropped is indistinguishable from honoured when all you see is a 200. A credit memo with no lines expands to an empty array rather than omitting the key.",
            "schema": {
              "type": "string"
            },
            "example": "receivablesCreditMemoLines"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesCreditMemo"
                }
              }
            }
          },
          "400": {
            "description": "CustomerTransactionId is not numeric.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "No credit memo with that id in this tenant - including when the id is a valid invoice.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "updateReceivablesCreditMemo",
        "summary": "Update a credit memo",
        "description": "Updates CreditMemoStatus, RecipientEmail or TransactionType. Unlike receivablesInvoices, Oracle states no \"you can update only ...\" restriction here; its request body also lists AllowCompletion and ControlCompletionReason, which belong to a transaction approval workflow this simulator does not model and are refused BY NAME rather than stored - a value nothing acts on reads back as though it took effect. CreditMemoStatus accepts Complete, Incomplete or Frozen and refuses anything else. TransactionType must stay Credit Memo: credit memos and invoices are one table split by that column, so changing it would move the row into /receivablesInvoices and out of this resource.",
        "tags": [
          "ReceivablesCreditMemo"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "CustomerTransactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivablesCreditMemo"
              },
              "example": {
                "CreditMemoStatus": "Incomplete"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated. The response is the credit memo as a GET would return it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesCreditMemo"
                }
              }
            }
          },
          "400": {
            "description": "Unsupported attribute, an unmodelled workflow attribute, or an unrecognised status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "No such credit memo in this environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCreditMemos/{CustomerTransactionId}/child/receivablesCreditMemoLines": {
      "get": {
        "operationId": "list_receivablesCreditMemoLinesReceivablesCreditMemo",
        "summary": "List credit memo lines",
        "description": "The lines of one credit memo, in LineNumber order, wrapped in the Oracle envelope. Attribute names are the credit memo's own: LineDescription, LineAmountCredit and LineQuantityCredit, not the invoice resource's Description, LineAmount and Quantity.",
        "tags": [
          "ReceivablesCreditMemo"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "CustomerTransactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 - read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "25"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesCreditMemoLineCollection"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "No such credit memo in this environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "post_receivablesCreditMemoLinesReceivablesCreditMemo",
        "summary": "Create a set of credit memo lines",
        "description": "Adds lines to an existing credit memo. Oracle's own wording is \"create a SET of lines\", and the body is an array; a single object is accepted as a set of one. The credit memo's EnteredAmount is re-derived from every line afterwards, in the same statement, so the header cannot drift from what it is made of. Oracle publishes no update and no delete on this child, and neither does this simulator.",
        "tags": [
          "ReceivablesCreditMemo"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "CustomerTransactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivablesCreditMemo"
              },
              "example": [
                {
                  "LineNumber": 2,
                  "LineAmountCredit": 40,
                  "LineDescription": "Freight credit"
                }
              ]
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesCreditMemoLineCollection"
                }
              }
            }
          },
          "400": {
            "description": "Unsupported attribute, or a line without a positive LineAmountCredit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "No such credit memo in this environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCreditMemos/{CustomerTransactionId}/child/receivablesCreditMemoLines/{CustomerTransactionLineId}": {
      "get": {
        "operationId": "get_receivablesCreditMemoLinesReceivablesCreditMemo",
        "summary": "Retrieve one credit memo line",
        "description": "One line by its key, returning exactly the row the child collection would return for it.",
        "tags": [
          "ReceivablesCreditMemo"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "CustomerTransactionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "CustomerTransactionLineId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesCreditMemoLine"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "No such credit memo, or no such line on it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesAdjustments": {
      "get": {
        "operationId": "listReceivablesAdjustment",
        "summary": "List receivables adjustments",
        "description": "Returns a paged collection wrapped in the Oracle envelope (items, count, hasMore, limit, offset, links, optional totalResults). Scoped to your tenant.",
        "tags": [
          "ReceivablesAdjustment"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Supported fields are exactly the six Oracle marks x-queryable: AdjustmentId, AdjustmentNumber, BillToSiteUseId, CustomerTransactionId, TransactionClass, TransactionNumber. A filter on any other attribute is refused 400 by name with the reason - including attributes this resource emits, such as Status and AdjustmentType, which Oracle does not mark queryable and which a real pod refuses too.",
            "schema": {
              "type": "string"
            },
            "example": "TransactionClass='Invoice'"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "Oracle documents one finder on this resource: PrimaryKey;AdjustmentId=<id>. Any other finder is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "PrimaryKey;AdjustmentId=300100000000002"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Sort key and direction. AdjustmentId, AdjustmentNumber, BillToSiteUseId and CustomerTransactionId sort. TransactionNumber and TransactionClass FILTER but do not SORT: they live on the adjusted transaction, and ordering on a joined column does not reorder adjustments. Asking to sort by one is refused rather than silently ignored.",
            "schema": {
              "type": "string"
            },
            "example": "AdjustmentId:desc"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "AdjustmentId,AdjustmentAmount,Status"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Default 25.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset for paging.",
            "schema": {
              "type": "string"
            },
            "example": "25"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set true to include totalResults in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "Set true to omit the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated link relations to keep.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesAdjustmentCollection"
                }
              }
            }
          },
          "400": {
            "description": "Invalid q, finder or orderBy, or a filter on a non-queryable attribute.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesAdjustments/{AdjustmentId}": {
      "get": {
        "operationId": "getReceivablesAdjustment",
        "summary": "Retrieve one receivables adjustment",
        "description": "Returns a single adjustment. One belonging to another tenant is indistinguishable from one that does not exist: both answer 404.",
        "tags": [
          "ReceivablesAdjustment"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "AdjustmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "AdjustmentId,AdjustmentAmount,Status"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "Set true to omit the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated link relations to keep.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesAdjustment"
                }
              }
            }
          },
          "400": {
            "description": "AdjustmentId is not numeric, or expand names a child that cannot be expanded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "No adjustment with that id in this tenant.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receiptMethods": {
      "get": {
        "operationId": "listReceiptMethod",
        "summary": "List receipt methods",
        "description": "Returns a paged collection wrapped in the Oracle envelope (items, count, hasMore, limit, offset, links, optional totalResults). Every configured method is listed, active or not - see the limitation note below.",
        "tags": [
          "ReceiptMethod"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Supported fields: ReceiptMethodId and Name — exactly the two Oracle marks x-queryable. Filtering on ReceiptClass is refused 400, as a real pod refuses it. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered — read that rather than guessing, and note it describes THIS API: where it is narrower than Oracle the refusal message says so explicitly.",
            "schema": {
              "type": "string"
            },
            "example": "Name='Manual'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "ReceiptMethodId,Name"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "25"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default ReceiptMethodId:asc). Same fields as q.",
            "schema": {
              "type": "string"
            },
            "example": "Name:asc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "Named finder. PrimaryKey;ReceiptMethodId=... is the only finder Oracle documents on this resource; filter by name with q instead.",
            "schema": {
              "type": "string"
            },
            "example": "PrimaryKey;ReceiptMethodId=300100000000000"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceiptMethodCollection"
                }
              }
            }
          },
          "400": {
            "description": "Invalid q, finder or orderBy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receiptMethods/{ReceiptMethodId}": {
      "get": {
        "operationId": "getReceiptMethod",
        "summary": "Retrieve one receipt method",
        "description": "Returns a single receipt method. A method belonging to another tenant is indistinguishable from one that does not exist: both answer 404.",
        "tags": [
          "ReceiptMethod"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "ReceiptMethodId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "ReceiptMethodId,Name"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceiptMethod"
                }
              }
            }
          },
          "400": {
            "description": "ReceiptMethodId is not numeric.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "No receipt method with that id in this tenant.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/customerAccountSitesLOV": {
      "get": {
        "operationId": "listCustomerAccountSitesLOV",
        "summary": "List customer account sites",
        "description": "Returns a paged collection wrapped in the Oracle envelope (items, count, hasMore, limit, offset, links, optional totalResults). Only active site uses are listed.",
        "tags": [
          "CustomerAccountSitesLOV"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Supported fields: SiteUseId, SiteName, PrimarySite, CustomerAccountId, AccountNumber, CustomerName, PartyNumber. The four attributes this tenant does not populate are not filterable. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered — read that rather than guessing, and note it describes THIS API: where it is narrower than Oracle the refusal message says so explicitly. Oracle's own queryable flag for this resource was never confirmed, so the filterable set here is this simulator's and may be narrower or wider than a real pod's. The four attributes this environment leaves null are excluded deliberately. Confirm against your instance's customerAccountSitesLOV/describe before relying on a filter here.",
            "schema": {
              "type": "string"
            },
            "example": "CustomerAccountId=300100000001000"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "SiteUseId,SiteName,PrimarySite"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default SiteUseId:asc). Same fields as q.",
            "schema": {
              "type": "string"
            },
            "example": "SiteName:asc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "Named finder. Only PrimaryKey;SiteUseId=... is supported; filter by account with q instead.",
            "schema": {
              "type": "string"
            },
            "example": "PrimaryKey;SiteUseId=300100000002001"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerAccountSitesLOVCollection"
                }
              }
            }
          },
          "400": {
            "description": "Invalid q, finder or orderBy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/customerAccountSitesLOV/{SiteUseId}": {
      "get": {
        "operationId": "getCustomerAccountSitesLOV",
        "summary": "Retrieve one customer account site",
        "description": "Returns a single site use.",
        "tags": [
          "CustomerAccountSitesLOV"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "SiteUseId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of fields to include in each item.",
            "schema": {
              "type": "string"
            },
            "example": "SiteUseId,SiteName,PrimarySite"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerAccountSitesLOV"
                }
              }
            }
          },
          "400": {
            "description": "SiteUseId is not numeric.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "No customer account site with that SiteUseId.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountActivities": {
      "get": {
        "operationId": "listReceivablesCustomerAccountActivity",
        "summary": "List customer account activities",
        "description": "Returns a paged collection wrapped in the Oracle envelope. One row per customer ACCOUNT.",
        "tags": [
          "ReceivablesCustomerAccountActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForAccount"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default AccountId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForAccount:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "This resource has no named finders in Oracle, so any finder is refused 400 rather than ignored. Filter with q.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "expand",
            "in": "query",
            "required": false,
            "description": "Item read only. Embeds the standardReceiptApplications child in the payload instead of a link: expand=standardReceiptApplications, or expand=all. An expanded application is byte-identical to one read from the child endpoint, and an account with none comes back as an empty array rather than omitting the key. A child this resource does not have is refused 400 REST-01003, never ignored. Until 2026-08-05 this parameter was accepted and SILENTLY DROPPED here — 200, no child, nothing to say the request had not been honoured.",
            "schema": {
              "type": "string"
            },
            "example": "standardReceiptApplications"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesCustomerAccountActivityCollection"
                }
              }
            }
          },
          "400": {
            "description": "REST-01003 / REST-01005 / REST-01006 — a non-queryable attribute in q, an unknown finder, or an unknown orderBy field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_VIEW_CUSTOMER_ACCOUNT_ACTIVITY_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountActivities/{AccountId}": {
      "get": {
        "operationId": "getReceivablesCustomerAccountActivity",
        "summary": "Retrieve one customer account activity",
        "description": "Returns the activity row for one customer account. Keyed by AccountId.",
        "tags": [
          "ReceivablesCustomerAccountActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "AccountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForAccount"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "expand",
            "in": "query",
            "required": false,
            "description": "Item read only. Embeds the standardReceiptApplications child in the payload instead of a link: expand=standardReceiptApplications, or expand=all. An expanded application is byte-identical to one read from the child endpoint, and an account with none comes back as an empty array rather than omitting the key. A child this resource does not have is refused 400 REST-01003, never ignored. Until 2026-08-05 this parameter was accepted and SILENTLY DROPPED here — 200, no child, nothing to say the request had not been honoured.",
            "schema": {
              "type": "string"
            },
            "example": "standardReceiptApplications"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesCustomerAccountActivity"
                }
              }
            }
          },
          "400": {
            "description": "REST-01400 — AccountId is not numeric, or REST-01003 when expand names a child this resource does not have.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_VIEW_CUSTOMER_ACCOUNT_ACTIVITY_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 — no such activity row in this environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountActivities/{AccountId}/child/transactionAdjustments": {
      "get": {
        "operationId": "list_transactionAdjustmentsReceivablesCustomerAccountActivity",
        "summary": "List transaction adjustments (child collection)",
        "description": "Adjustments made against this account's transactions - a manual increase or decrease to a transaction or one of its installments. Read-only, like every activity child. Oracle documents two finders here and both are honoured: PrimaryKey;AdjustmentId=<id>, and TransactionAdjustmentsFinder;AdjustmentLimitByDays=<n>,ReferenceTransactionStatus=<Open|Closed> (the day limit counts back from the adjustment date and defaults to 90). Seventeen of Oracle's eighteen attributes are emitted; ProcessStatus is not modelled and a filter on it is refused by name rather than dropped.",
        "tags": [
          "ReceivablesCustomerAccountActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "AccountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForAccount"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default AccountId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForAccount:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "This resource has no named finders in Oracle, so any finder is refused 400 rather than ignored. Filter with q.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionAdjustmentCollection"
                }
              }
            }
          },
          "400": {
            "description": "A filter, sort or finder this child does not support.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "The credential lacks the account-activity privilege. Declared because the child ANSWERS it — a status a caller can receive and the document omits is the same defect as an attribute we emit and never declare.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 - no such activity row in this environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountActivities/{AccountId}/child/transactionsPaidByOtherCustomers": {
      "get": {
        "operationId": "list_transactionsPaidByOtherCustomersReceivablesCustomerAccountActivity",
        "summary": "List transactions paid by other customers (child collection)",
        "description": "This account's transactions that SOMEONE ELSE paid - receipt applications whose receipt belongs to a different customer from the transaction it settles. Read-only, like every activity child. Seventeen of Oracle's nineteen attributes are emitted; IsLatestApplication and ProcessStatus are not modelled and a filter on either is refused by name rather than dropped.",
        "tags": [
          "ReceivablesCustomerAccountActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "AccountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForAccount"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default AccountId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForAccount:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionPaidByOtherCustomerCollection"
                }
              }
            }
          },
          "400": {
            "description": "A filter or sort on an attribute this child does not support.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "The credential lacks the account-activity privilege. Declared because the child ANSWERS it — a status a caller can receive and the document omits is the same defect as an attribute we emit and never declare.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 - no such activity row in this environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountActivities/{AccountId}/child/creditMemoApplications": {
      "get": {
        "operationId": "list_creditMemoApplicationsReceivablesCustomerAccountActivity",
        "summary": "List credit memo applications (child collection)",
        "description": "Returns where each credit memo's value went — which transaction and installment it settled. The counterpart of standardReceiptApplications, for credit rather than cash. Read-only: applications are created by the settlement process, not by a caller. Twelve of Oracle's twenty-two attributes are emitted.\n\n- Ownership runs through the CREDIT MEMO. An application row carries no customer of its own — it names a credit memo and the transaction that memo credits — and it is the memo's account and site that place it under a parent.\n- Three attributes Oracle documents are NOT emitted, each for a stated reason. ActivityName: receivables activities are not modelled, the same gap as on standardReceiptApplications. IsLatestApplication: Oracle does not say whether 'latest' is per credit memo, per transaction or per installment, and the three differ. TransactionType: Oracle publishes it outside the ReferenceTransaction* group, which suggests it describes the credit memo rather than the credited transaction, but the page does not say so and the two readings give different values — emitting either would publish a guess as a fact on an attribute Oracle also marks queryable.\n- Queryable attributes: ApplicationId, ApplicationStatus, CreditMemoId, CreditMemoNumber, CreditMemoStatus, ReferenceInstallmentId, ReferenceTransactionId, ReferenceTransactionNumber, ReferenceTransactionStatus. The three unemitted ones above are queryable in Oracle and are refused here by name.\n- CreditMemoStatus and ReferenceTransactionStatus are BOTH derived from open balances — on two different transactions. Each filters as a predicate and neither sorts, and neither can be combined with OR, because a separate condition preserves the meaning of an AND only.\n- Finders: PrimaryKey;ApplicationId=… and CreditMemoApplicationsFinder with CreditMemoStatus, ReferenceTransactionStatus (both Open/Closed) and ApplicationLimitByDays (Oracle's documented default is 90, counted from the application date).",
        "tags": [
          "ReceivablesCustomerAccountActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "AccountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForAccount"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default AccountId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForAccount:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "This resource has no named finders in Oracle, so any finder is refused 400 rather than ignored. Filter with q.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreditMemoApplicationCollection"
                }
              }
            }
          },
          "400": {
            "description": "REST-01000 / REST-01003 / REST-01005 / REST-01006 — an OR on a derived status, a non-queryable attribute in q, an unknown or unimplemented finder variable, or an unknown/unsortable orderBy field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_VIEW_CUSTOMER_ACCOUNT_ACTIVITY_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 / REST-01404 — unknown parent, or an application whose credit memo does not belong to this account or site.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountActivities/{AccountId}/child/creditMemos": {
      "get": {
        "operationId": "list_creditMemosReceivablesCustomerAccountActivity",
        "summary": "List credit memos (child collection)",
        "description": "Returns the credit memos raised against this customer. A credit memo is a TRANSACTION in Oracle's model and in this simulator, so it carries a transaction id, number and currency. Read-only. Ten of Oracle's eighteen attributes are emitted.\n\n- AvailableAmount is documented by Oracle and is NOT emitted here. Oracle publishes both AvailableAmount ('remaining credit memo amount') and TotalBalanceAmount ('remaining balance amount') and states no rule distinguishing them. Emitting the same figure for both would make one attribute a duplicate of the other, and Oracle does not publish two attributes with the same meaning — so rather than guess which is which, only TotalBalanceAmount is emitted. Recorded as unverified.\n- Also not emitted: AccountingDate, BillToSiteNumber, CreatedBy, CreationDate, LastUpdatedBy, PurchaseOrder and TransactionClass. None is queryable in Oracle, so none costs a filter.\n- Queryable attributes: CreditMemoId, CreditMemoNumber, CreditMemoStatus, InstallmentId, TransactionType — all five Oracle marks queryable, all emitted.\n- CreditMemoStatus is derived from the open balance and InstallmentId comes from the payment schedule. Both FILTER; neither SORTS, because ordering on a computed value or a joined column does not reorder the credit memos, and a sort that does not sort is worse than a refused one. CreditMemoStatus also cannot be combined with OR: it is applied as a separate condition, which preserves the meaning of an AND only.\n- Finders: PrimaryKey;CreditMemoId=… and CreditMemosFinder with CreditMemoStatus (Open/Closed) and CreditMemoLimitByDays (Oracle's documented default is 90, counted from the credit memo date).",
        "tags": [
          "ReceivablesCustomerAccountActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "AccountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForAccount"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default AccountId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForAccount:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "This resource has no named finders in Oracle, so any finder is refused 400 rather than ignored. Filter with q.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountCreditMemoCollection"
                }
              }
            }
          },
          "400": {
            "description": "REST-01000 / REST-01003 / REST-01005 / REST-01006 — an OR on CreditMemoStatus, a non-queryable attribute in q, an unknown or unimplemented finder variable, or an unknown/unsortable orderBy field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_VIEW_CUSTOMER_ACCOUNT_ACTIVITY_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 / REST-01404 — unknown parent, or a credit memo that does not belong to this account or site.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountActivities/{AccountId}/child/transactionPaymentSchedules": {
      "get": {
        "operationId": "list_transactionPaymentSchedulesReceivablesCustomerAccountActivity",
        "summary": "List payment schedules (child collection)",
        "description": "Returns this customer's installments across all their transactions — what they still OWE, as against the standardReceipts child (what they paid) and standardReceiptApplications (where it went). Read-only. Twelve of Oracle's twenty-three attributes are emitted; AccountingDate, BillToSiteNumber, CreatedBy, CreationDate, LastUpdatedBy, PaymentDaysLate, PurchaseOrder, ReceiptMethod, StructuredPaymentReference, TransactionClass and TransactionSourceName are not modelled here. None of them is queryable in Oracle, so none costs a filter - this is the only child of these resources whose filterable set is 1:1 with Oracle's.\n\n- InstallmentStatus is Open or Closed here. The receivablesInvoiceInstallments child publishes the SAME underlying state as OP or CL — each resource uses Oracle's vocabulary for itself. Filtering uses this resource's spelling: q=InstallmentStatus='Open', not 'OP'.\n- Queryable attributes: InstallmentId, InstallmentStatus, TransactionId, TransactionNumber, TransactionType — all five Oracle marks queryable, all emitted.\n- Finders: PrimaryKey;InstallmentId=… and TransactionPaymentSchedulesFinder with InstallmentStatus (Open/Closed) and TransactionLimitByDays (Oracle's documented default is 90, counted from the TRANSACTION date, not the due date).\n- Sortable attributes are the seven stored on the installment itself. TransactionId, TransactionNumber, TransactionDate, TransactionType and EnteredCurrency are resolved from the transaction and are refused for orderBy by name — sorting on a related column would not reorder the installments.\n- InstallmentStatus cannot be combined with OR in q: the value is translated to the stored spelling and applied as a separate condition, which preserves the meaning of an AND only.",
        "tags": [
          "ReceivablesCustomerAccountActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "AccountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForAccount"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default AccountId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForAccount:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "This resource has no named finders in Oracle, so any finder is refused 400 rather than ignored. Filter with q.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionPaymentScheduleCollection"
                }
              }
            }
          },
          "400": {
            "description": "REST-01000 / REST-01003 / REST-01005 / REST-01006 — an OR on InstallmentStatus, a non-queryable attribute in q, an unknown or unimplemented finder variable, or an unknown/unsortable orderBy field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_VIEW_CUSTOMER_ACCOUNT_ACTIVITY_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 / REST-01404 — unknown parent, or an installment that does not belong to this account or site.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountActivities/{AccountId}/child/standardReceipts": {
      "get": {
        "operationId": "list_standardReceiptsReceivablesCustomerAccountActivity",
        "summary": "List receipts (child collection)",
        "description": "Returns the receipts belonging to this customer — what they PAID, as opposed to the standardReceiptApplications child beside it, which is where each receipt's money went. Read-only. Nine of Oracle's nineteen attributes are emitted; AccountingDate, AvailableAmount, BusinessUnit, CreatedBy, CreationDate, CustomerSite, DocumentNumber, LastUpdatedBy, LegalEntity and ProcessStatus are not modelled here and are ABSENT rather than null - a null would claim the value is unset, which is a different statement from not tracking it.\n\n- Queryable attributes: ReceiptMethod, ReceiptNumber, StandardReceiptId. This is a DIFFERENT set from the top-level standardReceipts resource, where ReceiptDate and CustomerAccountNumber are queryable and ReceiptMethod is not. Two resources over the same rows do not share a filter contract.\n- Oracle also marks BusinessUnit and ProcessStatus queryable here. Neither is emitted by this simulator, so a filter on either is refused by name rather than ignored — an ignored filter returns every receipt and is indistinguishable from one that matched them all.\n- Finders: PrimaryKey;StandardReceiptId=… and StandardReceiptsFinder;ReceiptLimitByDays=… (Oracle's documented default is 90 days, counted from the receipt date). StandardReceiptsFinder's ProcessStatus variable is refused by name for the same reason.\n- Every emitted attribute is sortable. The parent resources expand this child too: expand=standardReceipts, or expand=all.",
        "tags": [
          "ReceivablesCustomerAccountActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "AccountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForAccount"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default AccountId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForAccount:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "This resource has no named finders in Oracle, so any finder is refused 400 rather than ignored. Filter with q.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountStandardReceiptCollection"
                }
              }
            }
          },
          "400": {
            "description": "REST-01003 / REST-01005 / REST-01006 — a non-queryable attribute in q, an unknown or unimplemented finder variable, or an unknown orderBy field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_VIEW_CUSTOMER_ACCOUNT_ACTIVITY_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 / REST-01404 — unknown parent, or a receipt that does not belong to this account or site.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountActivities/{AccountId}/child/standardReceiptApplications": {
      "get": {
        "operationId": "list_standardReceiptApplicationsReceivablesCustomerAccountActivity",
        "summary": "List receipt applications (child collection)",
        "description": "Returns each application of receipt cash against this customer's invoices — the row that proves a payment landed and says which invoice and installment it settled. READ-ONLY: applications are created only by the Apply Receipts Using AutoMatch process, and there is no POST here.\n\n- Queryable attributes: ApplicationId, StandardReceiptId, ApplicationStatus, ReferenceTransactionId, ReferenceInstallmentId. ApplicationAmount, ApplicationDate and LastUpdateDate are NOT queryable in Oracle and are refused here.\n- Finders: PrimaryKey;ApplicationId=… and StandardReceiptApplicationsFinder with ApplicationLimitByDays or ReferenceTransactionStatus. StandardReceiptApplicationsFinder's ProcessStatus variable is documented by Oracle and not implemented here; it is refused by name rather than ignored.\n- Only ApplicationStatus APP rows reduce an invoice balance. A REV row is a reversal and is history.",
        "tags": [
          "ReceivablesCustomerAccountActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "AccountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForAccount"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default AccountId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForAccount:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "This resource has no named finders in Oracle, so any finder is refused 400 rather than ignored. Filter with q.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StandardReceiptApplicationCollection"
                }
              }
            }
          },
          "400": {
            "description": "REST-01003 / REST-01005 / REST-01006 — a non-queryable attribute in q, an unknown or unimplemented finder variable, or an unknown orderBy field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_VIEW_CUSTOMER_ACCOUNT_ACTIVITY_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 — unknown parent, or a child Oracle documents that this simulator does not implement (it is named in the message).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountSiteActivities": {
      "get": {
        "operationId": "listReceivablesCustomerAccountSiteActivity",
        "summary": "List customer account site activities",
        "description": "Returns a paged collection wrapped in the Oracle envelope. One row per customer account SITE (bill-to site use), so a customer with three bill-to sites has three rows.",
        "tags": [
          "ReceivablesCustomerAccountSiteActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForSite"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default BillToSiteUseId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForSite:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "This resource has no named finders in Oracle, so any finder is refused 400 rather than ignored. Filter with q.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "expand",
            "in": "query",
            "required": false,
            "description": "Item read only. Embeds the standardReceiptApplications child in the payload instead of a link: expand=standardReceiptApplications, or expand=all. An expanded application is byte-identical to one read from the child endpoint, and an account with none comes back as an empty array rather than omitting the key. A child this resource does not have is refused 400 REST-01003, never ignored. Until 2026-08-05 this parameter was accepted and SILENTLY DROPPED here — 200, no child, nothing to say the request had not been honoured.",
            "schema": {
              "type": "string"
            },
            "example": "standardReceiptApplications"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesCustomerAccountSiteActivityCollection"
                }
              }
            }
          },
          "400": {
            "description": "REST-01003 / REST-01005 / REST-01006 — a non-queryable attribute in q, an unknown finder, or an unknown orderBy field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_VIEW_CUSTOMER_ACCOUNT_ACTIVITY_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountSiteActivities/{BillToSiteUseId}": {
      "get": {
        "operationId": "getReceivablesCustomerAccountSiteActivity",
        "summary": "Retrieve one customer account site activity",
        "description": "Returns the activity row for one bill-to site use. Keyed by BillToSiteUseId — NOT by AccountId, which answers 404. Both attributes are on the row; take BillToSiteUseId. On the first seeded account the two values coincide, so a test written against that row alone cannot tell them apart.",
        "tags": [
          "ReceivablesCustomerAccountSiteActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "BillToSiteUseId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForSite"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "expand",
            "in": "query",
            "required": false,
            "description": "Item read only. Embeds the standardReceiptApplications child in the payload instead of a link: expand=standardReceiptApplications, or expand=all. An expanded application is byte-identical to one read from the child endpoint, and an account with none comes back as an empty array rather than omitting the key. A child this resource does not have is refused 400 REST-01003, never ignored. Until 2026-08-05 this parameter was accepted and SILENTLY DROPPED here — 200, no child, nothing to say the request had not been honoured.",
            "schema": {
              "type": "string"
            },
            "example": "standardReceiptApplications"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivablesCustomerAccountSiteActivity"
                }
              }
            }
          },
          "400": {
            "description": "REST-01400 — BillToSiteUseId is not numeric, or REST-01003 when expand names a child this resource does not have.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_VIEW_CUSTOMER_ACCOUNT_ACTIVITY_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 — no such activity row in this environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountSiteActivities/{BillToSiteUseId}/child/transactionAdjustments": {
      "get": {
        "operationId": "list_transactionAdjustmentsReceivablesCustomerAccountSiteActivity",
        "summary": "List transaction adjustments (child collection)",
        "description": "Adjustments made against this account's transactions - a manual increase or decrease to a transaction or one of its installments. Read-only, like every activity child. Oracle documents two finders here and both are honoured: PrimaryKey;AdjustmentId=<id>, and TransactionAdjustmentsFinder;AdjustmentLimitByDays=<n>,ReferenceTransactionStatus=<Open|Closed> (the day limit counts back from the adjustment date and defaults to 90). Seventeen of Oracle's eighteen attributes are emitted; ProcessStatus is not modelled and a filter on it is refused by name rather than dropped.",
        "tags": [
          "ReceivablesCustomerAccountSiteActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "BillToSiteUseId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForSite"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default BillToSiteUseId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForSite:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "This resource has no named finders in Oracle, so any finder is refused 400 rather than ignored. Filter with q.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionAdjustmentCollection"
                }
              }
            }
          },
          "400": {
            "description": "A filter, sort or finder this child does not support.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "The credential lacks the account-activity privilege. Declared because the child ANSWERS it — a status a caller can receive and the document omits is the same defect as an attribute we emit and never declare.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 - no such activity row in this environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountSiteActivities/{BillToSiteUseId}/child/transactionsPaidByOtherCustomers": {
      "get": {
        "operationId": "list_transactionsPaidByOtherCustomersReceivablesCustomerAccountSiteActivity",
        "summary": "List transactions paid by other customers (child collection)",
        "description": "This account's transactions that SOMEONE ELSE paid - receipt applications whose receipt belongs to a different customer from the transaction it settles. Read-only, like every activity child. Seventeen of Oracle's nineteen attributes are emitted; IsLatestApplication and ProcessStatus are not modelled and a filter on either is refused by name rather than dropped.",
        "tags": [
          "ReceivablesCustomerAccountSiteActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "BillToSiteUseId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForSite"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default BillToSiteUseId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForSite:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          }
        ],
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionPaidByOtherCustomerCollection"
                }
              }
            }
          },
          "400": {
            "description": "A filter or sort on an attribute this child does not support.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "The credential lacks the account-activity privilege. Declared because the child ANSWERS it — a status a caller can receive and the document omits is the same defect as an attribute we emit and never declare.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 - no such activity row in this environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountSiteActivities/{BillToSiteUseId}/child/creditMemoApplications": {
      "get": {
        "operationId": "list_creditMemoApplicationsReceivablesCustomerAccountSiteActivity",
        "summary": "List credit memo applications (child collection)",
        "description": "Returns where each credit memo's value went — which transaction and installment it settled. The counterpart of standardReceiptApplications, for credit rather than cash. Read-only: applications are created by the settlement process, not by a caller. Twelve of Oracle's twenty-two attributes are emitted.\n\n- Ownership runs through the CREDIT MEMO. An application row carries no customer of its own — it names a credit memo and the transaction that memo credits — and it is the memo's account and site that place it under a parent.\n- Three attributes Oracle documents are NOT emitted, each for a stated reason. ActivityName: receivables activities are not modelled, the same gap as on standardReceiptApplications. IsLatestApplication: Oracle does not say whether 'latest' is per credit memo, per transaction or per installment, and the three differ. TransactionType: Oracle publishes it outside the ReferenceTransaction* group, which suggests it describes the credit memo rather than the credited transaction, but the page does not say so and the two readings give different values — emitting either would publish a guess as a fact on an attribute Oracle also marks queryable.\n- Queryable attributes: ApplicationId, ApplicationStatus, CreditMemoId, CreditMemoNumber, CreditMemoStatus, ReferenceInstallmentId, ReferenceTransactionId, ReferenceTransactionNumber, ReferenceTransactionStatus. The three unemitted ones above are queryable in Oracle and are refused here by name.\n- CreditMemoStatus and ReferenceTransactionStatus are BOTH derived from open balances — on two different transactions. Each filters as a predicate and neither sorts, and neither can be combined with OR, because a separate condition preserves the meaning of an AND only.\n- Finders: PrimaryKey;ApplicationId=… and CreditMemoApplicationsFinder with CreditMemoStatus, ReferenceTransactionStatus (both Open/Closed) and ApplicationLimitByDays (Oracle's documented default is 90, counted from the application date).",
        "tags": [
          "ReceivablesCustomerAccountSiteActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "BillToSiteUseId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForSite"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default BillToSiteUseId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForSite:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "This resource has no named finders in Oracle, so any finder is refused 400 rather than ignored. Filter with q.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreditMemoApplicationCollection"
                }
              }
            }
          },
          "400": {
            "description": "REST-01000 / REST-01003 / REST-01005 / REST-01006 — an OR on a derived status, a non-queryable attribute in q, an unknown or unimplemented finder variable, or an unknown/unsortable orderBy field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_VIEW_CUSTOMER_ACCOUNT_ACTIVITY_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 / REST-01404 — unknown parent, or an application whose credit memo does not belong to this account or site.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountSiteActivities/{BillToSiteUseId}/child/creditMemos": {
      "get": {
        "operationId": "list_creditMemosReceivablesCustomerAccountSiteActivity",
        "summary": "List credit memos (child collection)",
        "description": "Returns the credit memos raised against this customer. A credit memo is a TRANSACTION in Oracle's model and in this simulator, so it carries a transaction id, number and currency. Read-only. Ten of Oracle's eighteen attributes are emitted.\n\n- AvailableAmount is documented by Oracle and is NOT emitted here. Oracle publishes both AvailableAmount ('remaining credit memo amount') and TotalBalanceAmount ('remaining balance amount') and states no rule distinguishing them. Emitting the same figure for both would make one attribute a duplicate of the other, and Oracle does not publish two attributes with the same meaning — so rather than guess which is which, only TotalBalanceAmount is emitted. Recorded as unverified.\n- Also not emitted: AccountingDate, BillToSiteNumber, CreatedBy, CreationDate, LastUpdatedBy, PurchaseOrder and TransactionClass. None is queryable in Oracle, so none costs a filter.\n- Queryable attributes: CreditMemoId, CreditMemoNumber, CreditMemoStatus, InstallmentId, TransactionType — all five Oracle marks queryable, all emitted.\n- CreditMemoStatus is derived from the open balance and InstallmentId comes from the payment schedule. Both FILTER; neither SORTS, because ordering on a computed value or a joined column does not reorder the credit memos, and a sort that does not sort is worse than a refused one. CreditMemoStatus also cannot be combined with OR: it is applied as a separate condition, which preserves the meaning of an AND only.\n- Finders: PrimaryKey;CreditMemoId=… and CreditMemosFinder with CreditMemoStatus (Open/Closed) and CreditMemoLimitByDays (Oracle's documented default is 90, counted from the credit memo date).",
        "tags": [
          "ReceivablesCustomerAccountSiteActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "BillToSiteUseId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForSite"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default BillToSiteUseId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForSite:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "This resource has no named finders in Oracle, so any finder is refused 400 rather than ignored. Filter with q.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountCreditMemoCollection"
                }
              }
            }
          },
          "400": {
            "description": "REST-01000 / REST-01003 / REST-01005 / REST-01006 — an OR on CreditMemoStatus, a non-queryable attribute in q, an unknown or unimplemented finder variable, or an unknown/unsortable orderBy field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_VIEW_CUSTOMER_ACCOUNT_ACTIVITY_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 / REST-01404 — unknown parent, or a credit memo that does not belong to this account or site.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountSiteActivities/{BillToSiteUseId}/child/transactionPaymentSchedules": {
      "get": {
        "operationId": "list_transactionPaymentSchedulesReceivablesCustomerAccountSiteActivity",
        "summary": "List payment schedules (child collection)",
        "description": "Returns this customer's installments across all their transactions — what they still OWE, as against the standardReceipts child (what they paid) and standardReceiptApplications (where it went). Read-only. Twelve of Oracle's twenty-three attributes are emitted; AccountingDate, BillToSiteNumber, CreatedBy, CreationDate, LastUpdatedBy, PaymentDaysLate, PurchaseOrder, ReceiptMethod, StructuredPaymentReference, TransactionClass and TransactionSourceName are not modelled here. None of them is queryable in Oracle, so none costs a filter - this is the only child of these resources whose filterable set is 1:1 with Oracle's.\n\n- InstallmentStatus is Open or Closed here. The receivablesInvoiceInstallments child publishes the SAME underlying state as OP or CL — each resource uses Oracle's vocabulary for itself. Filtering uses this resource's spelling: q=InstallmentStatus='Open', not 'OP'.\n- Queryable attributes: InstallmentId, InstallmentStatus, TransactionId, TransactionNumber, TransactionType — all five Oracle marks queryable, all emitted.\n- Finders: PrimaryKey;InstallmentId=… and TransactionPaymentSchedulesFinder with InstallmentStatus (Open/Closed) and TransactionLimitByDays (Oracle's documented default is 90, counted from the TRANSACTION date, not the due date).\n- Sortable attributes are the seven stored on the installment itself. TransactionId, TransactionNumber, TransactionDate, TransactionType and EnteredCurrency are resolved from the transaction and are refused for orderBy by name — sorting on a related column would not reorder the installments.\n- InstallmentStatus cannot be combined with OR in q: the value is translated to the stored spelling and applied as a separate condition, which preserves the meaning of an AND only.",
        "tags": [
          "ReceivablesCustomerAccountSiteActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "BillToSiteUseId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForSite"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default BillToSiteUseId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForSite:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "This resource has no named finders in Oracle, so any finder is refused 400 rather than ignored. Filter with q.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionPaymentScheduleCollection"
                }
              }
            }
          },
          "400": {
            "description": "REST-01000 / REST-01003 / REST-01005 / REST-01006 — an OR on InstallmentStatus, a non-queryable attribute in q, an unknown or unimplemented finder variable, or an unknown/unsortable orderBy field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_VIEW_CUSTOMER_ACCOUNT_ACTIVITY_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 / REST-01404 — unknown parent, or an installment that does not belong to this account or site.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountSiteActivities/{BillToSiteUseId}/child/standardReceipts": {
      "get": {
        "operationId": "list_standardReceiptsReceivablesCustomerAccountSiteActivity",
        "summary": "List receipts (child collection)",
        "description": "Returns the receipts belonging to this customer — what they PAID, as opposed to the standardReceiptApplications child beside it, which is where each receipt's money went. Read-only. Nine of Oracle's nineteen attributes are emitted; AccountingDate, AvailableAmount, BusinessUnit, CreatedBy, CreationDate, CustomerSite, DocumentNumber, LastUpdatedBy, LegalEntity and ProcessStatus are not modelled here and are ABSENT rather than null - a null would claim the value is unset, which is a different statement from not tracking it.\n\n- Queryable attributes: ReceiptMethod, ReceiptNumber, StandardReceiptId. This is a DIFFERENT set from the top-level standardReceipts resource, where ReceiptDate and CustomerAccountNumber are queryable and ReceiptMethod is not. Two resources over the same rows do not share a filter contract.\n- Oracle also marks BusinessUnit and ProcessStatus queryable here. Neither is emitted by this simulator, so a filter on either is refused by name rather than ignored — an ignored filter returns every receipt and is indistinguishable from one that matched them all.\n- Finders: PrimaryKey;StandardReceiptId=… and StandardReceiptsFinder;ReceiptLimitByDays=… (Oracle's documented default is 90 days, counted from the receipt date). StandardReceiptsFinder's ProcessStatus variable is refused by name for the same reason.\n- Every emitted attribute is sortable. The parent resources expand this child too: expand=standardReceipts, or expand=all.",
        "tags": [
          "ReceivablesCustomerAccountSiteActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "BillToSiteUseId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForSite"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default BillToSiteUseId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForSite:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "This resource has no named finders in Oracle, so any finder is refused 400 rather than ignored. Filter with q.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountStandardReceiptCollection"
                }
              }
            }
          },
          "400": {
            "description": "REST-01003 / REST-01005 / REST-01006 — a non-queryable attribute in q, an unknown or unimplemented finder variable, or an unknown orderBy field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_VIEW_CUSTOMER_ACCOUNT_ACTIVITY_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 / REST-01404 — unknown parent, or a receipt that does not belong to this account or site.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/fscmRestApi/resources/11.13.18.05/receivablesCustomerAccountSiteActivities/{BillToSiteUseId}/child/standardReceiptApplications": {
      "get": {
        "operationId": "list_standardReceiptApplicationsReceivablesCustomerAccountSiteActivity",
        "summary": "List receipt applications (child collection)",
        "description": "Returns each application of receipt cash against this customer's invoices — the row that proves a payment landed and says which invoice and installment it settled. READ-ONLY: applications are created only by the Apply Receipts Using AutoMatch process, and there is no POST here.\n\n- Queryable attributes: ApplicationId, StandardReceiptId, ApplicationStatus, ReferenceTransactionId, ReferenceInstallmentId. ApplicationAmount, ApplicationDate and LastUpdateDate are NOT queryable in Oracle and are refused here.\n- Finders: PrimaryKey;ApplicationId=… and StandardReceiptApplicationsFinder with ApplicationLimitByDays or ReferenceTransactionStatus. StandardReceiptApplicationsFinder's ProcessStatus variable is documented by Oracle and not implemented here; it is refused by name rather than ignored.\n- Only ApplicationStatus APP rows reduce an invoice balance. A REV row is a reversal and is history.",
        "tags": [
          "ReceivablesCustomerAccountSiteActivity"
        ],
        "security": [
          {
            "oauth2ClientCredentials": [
              "urn:opc:resource:consumer::all"
            ]
          }
        ],
        "parameters": [
          {
            "name": "BillToSiteUseId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Oracle q filter expression. Queryable attributes, per Oracle's x-queryable flag: AccountId, AccountNumber, CustomerId, CustomerName, TaxpayerIdentificationNumber, TaxRegistrationNumber, CreatedBy, CreationDate, LastUpdatedBy, LastUpdateDate. The two totals are NOT queryable — they are derived figures and Oracle refuses to filter on them, so \"every account that owes something\" is not a server-side query: read the collection and select locally. An attribute outside the list is refused 400, never ignored. Every attribute carries an `x-queryable` flag in the OpenAPI schema saying whether it can be filtered. That flag is Oracle's: this API is 1:1 with Oracle on every attribute it emits, so a filter that works here works on a real pod.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Comma-separated attribute projection.",
            "schema": {
              "type": "string"
            },
            "example": "AccountId,AccountNumber,TotalOpenReceivablesForSite"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size. Valid range 1-500, default 25. A value above 500 is CLAMPED to 500 and one at or below 0 falls back to 25 — neither is refused, so read `limit` back off the response envelope rather than assuming you got what you asked for.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based row offset, default 0. A negative value falls back to 0 rather than being refused. Page by adding the returned `limit` until `hasMore` is false.",
            "schema": {
              "type": "string"
            },
            "example": "50"
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "description": "Comma-separated Field:asc|desc list (default BillToSiteUseId:asc). Sortable on any attribute the resource emits, including the two totals — Oracle's queryable flag restricts FILTERING, not sorting. An unknown field is refused 400.",
            "schema": {
              "type": "string"
            },
            "example": "TotalOpenReceivablesForSite:desc"
          },
          {
            "name": "totalResults",
            "in": "query",
            "required": false,
            "description": "Set to true to include a totalResults count in the envelope.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "onlyData",
            "in": "query",
            "required": false,
            "description": "When true, strips the links section.",
            "schema": {
              "type": "string"
            },
            "example": "true"
          },
          {
            "name": "links",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of link RELATIONS to keep in the links array, e.g. links=self or links=self,parent. Oracle: \"This parameter can be used to show only certain links while accessing a singular resource or a resource collection.\" A relation the response does not carry is simply absent. Combining it with onlyData=true leaves no links at all, because onlyData strips the section outright.",
            "schema": {
              "type": "string"
            },
            "example": "self"
          },
          {
            "name": "finder",
            "in": "query",
            "required": false,
            "description": "This resource has no named finders in Oracle, so any finder is refused 400 rather than ignored. Filter with q.",
            "schema": {
              "type": "string"
            },
            "example": "AccountNumber='0001001'"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StandardReceiptApplicationCollection"
                }
              }
            }
          },
          "400": {
            "description": "REST-01003 / REST-01005 / REST-01006 — a non-queryable attribute in q, an unknown or unimplemented finder variable, or an unknown orderBy field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "401": {
            "description": "REST-01401 — missing or invalid bearer token, or a credential issued for a different environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "403": {
            "description": "FND_SECURITY_INSUFFICIENT_PRIVILEGE — the credential's scope list does not include AR_VIEW_CUSTOMER_ACCOUNT_ACTIVITY_PRIV.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          },
          "404": {
            "description": "REST-01102 — unknown parent, or a child Oracle documents that this simulator does not implement (it is named in the message).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OracleError"
                }
              }
            }
          }
        }
      }
    },
    "/oauth/token": {
      "post": {
        "operationId": "issueOAuthToken",
        "summary": "Issue an OAuth 2.0 access token (client_credentials)",
        "description": "RFC 6749 token endpoint. Only the client_credentials grant is supported. Submit `grant_type=client_credentials`, `client_id` and `client_secret` either as form-encoded body fields or via HTTP Basic authentication. `scope` is REQUIRED on this grant, as Oracle marks it; omitting it is refused with 400 invalid_request. Against this simulator send `urn:opc:resource:consumer::all`; against a real Oracle environment send the scope configured on the resource application in your identity domain.",
        "tags": [
          "OAuth"
        ],
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {
              "example": {
                "grant_type": "client_credentials",
                "scope": "urn:opc:resource:consumer::all",
                "client_id": "YOUR_CLIENT_ID",
                "client_secret": "YOUR_CLIENT_SECRET"
              },
              "schema": {
                "type": "object",
                "required": [
                  "grant_type",
                  "scope"
                ],
                "properties": {
                  "grant_type": {
                    "type": "string",
                    "enum": [
                      "client_credentials"
                    ]
                  },
                  "client_id": {
                    "type": "string"
                  },
                  "client_secret": {
                    "type": "string",
                    "format": "password"
                  },
                  "scope": {
                    "type": "string",
                    "description": "Required, as Oracle marks it on this grant. Space-delimited. Must not exceed the scope granted to the client, and `urn:opc:resource:consumer::all` must be requested on its own — either is refused with invalid_scope.",
                    "example": "urn:opc:resource:consumer::all"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Access token issued.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "access_token",
                    "token_type",
                    "expires_in"
                  ],
                  "properties": {
                    "access_token": {
                      "type": "string"
                    },
                    "token_type": {
                      "type": "string",
                      "enum": [
                        "Bearer"
                      ]
                    },
                    "expires_in": {
                      "type": "integer",
                      "description": "Lifetime in seconds (3600)."
                    },
                    "scope": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "access_token": "5p1c…",
                  "token_type": "Bearer",
                  "expires_in": 3600,
                  "scope": "urn:opc:resource:consumer::all"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_grant_type or invalid_scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthError"
                }
              }
            }
          },
          "401": {
            "description": "invalid_client — unknown credential, wrong secret, revoked client, or a credential issued for a different environment. All four are reported identically.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthError"
                }
              }
            }
          },
          "405": {
            "description": "The token endpoint accepts POST only. Carries an Allow header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "oauth2ClientCredentials": {
        "type": "oauth2",
        "description": "OAuth 2.0 client credentials grant (RFC 6749). `scope` is REQUIRED on the token request, as Oracle marks it — a request without it is refused with 400 invalid_request. Request `urn:opc:resource:consumer::all` on its own; Oracle refuses it combined with any other scope.",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://erplab.cloud/sim/{environmentKey}/oauth/token",
            "scopes": {
              "urn:opc:resource:consumer::all": "Every resource in the environment. Oracle requires this scope to be requested on its own."
            }
          }
        }
      }
    },
    "schemas": {
      "HateoasLink": {
        "type": "object",
        "properties": {
          "rel": {
            "type": "string"
          },
          "href": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "OracleError": {
        "type": "object",
        "description": "Oracle-style error envelope returned for 4xx/5xx REST responses. `o:errorCode` is the field to branch on — `title` and `detail` are prose and may change wording, the code does not.",
        "required": [
          "title",
          "status",
          "o:errorCode",
          "detail"
        ],
        "properties": {
          "title": {
            "type": "string",
            "description": "Short reason phrase, e.g. \"Bad Request\"."
          },
          "status": {
            "type": "integer",
            "description": "Repeats the HTTP status."
          },
          "type": {
            "type": "string",
            "description": "Absolute URI identifying the error code, of the form https://docs.oracle.com/error/{o:errorCode}. Carries no information beyond `o:errorCode`; branch on that."
          },
          "o:errorCode": {
            "type": "string",
            "description": "Stable machine-readable code. The only field to branch on."
          },
          "detail": {
            "type": "string",
            "description": "Human-readable explanation."
          },
          "o:errorDetails": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "detail": {
                  "type": "string"
                },
                "o:errorPath": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "ReceivablesInvoice": {
        "type": "object",
        "properties": {
          "CustomerTransactionId": {
            "type": "number",
            "description": "Primary key. Generated on create.",
            "readOnly": true,
            "x-queryable": true
          },
          "TransactionNumber": {
            "type": "string",
            "description": "Generated invoice number (INV-<CustomerTransactionId>).",
            "readOnly": true,
            "x-queryable": true
          },
          "BusinessUnit": {
            "type": "string",
            "maxLength": 240,
            "description": "Business unit name. Required on create.",
            "x-queryable": false
          },
          "TransactionType": {
            "type": "string",
            "maxLength": 20,
            "description": "AR transaction type name (e.g. Invoice).",
            "x-queryable": false
          },
          "TransactionSource": {
            "type": "string",
            "maxLength": 50,
            "description": "Transaction source name (e.g. MANUAL).",
            "x-queryable": false
          },
          "BillToCustomerNumber": {
            "type": "string",
            "maxLength": 30,
            "description": "Customer account number. Resolved server-side to BillToCustomerId.",
            "x-queryable": false
          },
          "InvoiceCurrencyCode": {
            "type": "string",
            "maxLength": 15,
            "description": "ISO 4217 currency code.",
            "x-queryable": false
          },
          "TransactionDate": {
            "type": "string",
            "format": "date",
            "description": "yyyy-MM-dd. Defaults to today on create.",
            "x-queryable": false
          },
          "PaymentTerms": {
            "type": "string",
            "maxLength": 15,
            "description": "Payment-terms name. Defaults to IMMEDIATE.",
            "x-queryable": false
          },
          "DueDate": {
            "type": "string",
            "format": "date",
            "description": "yyyy-MM-dd. Optional.",
            "x-queryable": false
          },
          "EnteredAmount": {
            "type": "number",
            "description": "Sum of line extended amounts.",
            "readOnly": true,
            "x-queryable": false
          },
          "InvoiceBalanceAmount": {
            "type": "number",
            "description": "Equal to EnteredAmount until receipts are applied.",
            "readOnly": true,
            "x-queryable": true
          },
          "InvoiceStatus": {
            "type": "string",
            "description": "Complete, Incomplete or Frozen. Always Complete on create - Oracle's default, and its stated rule is \"Value must be Complete when creating a receivables invoice\", so any other value on POST is refused. It is NOT read-only afterwards: Oracle documents it in the PATCH body, and it is the only status attribute this resource lets you change. PATCH it to any of the three values. An unrecognised value is refused rather than stored.",
            "x-queryable": true
          },
          "BillToPartyId": {
            "type": "string",
            "description": "The unique identifier of the bill-to customer assigned to the invoice. An internal identifier — never pass it as CustomerAccountNumber on a receipt.",
            "readOnly": true,
            "x-queryable": true
          },
          "BillToCustomerName": {
            "type": "string",
            "maxLength": 360,
            "description": "The name that identifies the bill-to customer assigned to the invoice.",
            "x-queryable": false
          },
          "BillToSite": {
            "type": "string",
            "maxLength": 150,
            "description": "The bill-to customer site assigned to the invoice.",
            "x-queryable": false
          },
          "BillToContact": {
            "type": "string",
            "maxLength": 360,
            "description": "The contact details of the bill-to customer. This is a NAME - the resource carries no numeric contact identifier - resolved against the active contacts of the bill-to customer, and an unmatched name is rejected with AR-1031 rather than silently dropped. If omitted, an active contact on the bill-to site (or account) carrying a BILL_TO responsibility and an email address is resolved server-side. The contacts themselves are readable at /crmRestApi/resources/11.13.18.05/contacts.",
            "x-queryable": false
          },
          "DeliveryMethod": {
            "type": "string",
            "description": "Invoice delivery method. Supported values: E-Mail, Paper, XML. Defaults to E-Mail when an email recipient can be resolved, otherwise Paper.",
            "x-queryable": true
          },
          "Email": {
            "type": "string",
            "description": "Invoice-level delivery email override. If omitted, the resolved bill-to contact's email is used. Not required — invoices may still be created without a deliverable email (the response will reflect this).",
            "x-queryable": true
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Timestamp of the most recent server-side change to the invoice header or any of its child installments. Format: ISO-8601 UTC with millisecond precision and `+0000` offset (e.g. 2026-06-25T12:00:00.000+0000). Use as an incremental-sync watermark: `q=LastUpdateDate > '2026-06-25T12:00:00.000+0000'` (URL-encoded).",
            "readOnly": true,
            "x-queryable": true
          },
          "receivablesInvoiceLines": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "CustomerTransactionLineId": {
                  "type": "number",
                  "description": "Primary key of the line. Generated; never sent on create.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LineNumber": {
                  "type": "number",
                  "description": "1-based line number within the invoice. Assigned in order when omitted.",
                  "x-queryable": false
                },
                "Description": {
                  "type": "string",
                  "description": "Free-text line description.",
                  "x-queryable": false
                },
                "Quantity": {
                  "type": "number",
                  "description": "Quantity billed.",
                  "x-queryable": false
                },
                "UnitSellingPrice": {
                  "type": "number",
                  "description": "Price per unit in the invoice currency.",
                  "x-queryable": false
                },
                "LineAmount": {
                  "type": "number",
                  "description": "Quantity x UnitSellingPrice, computed server-side. Sending it on create is refused.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "At least one line required on create. Each line accepts LineNumber, Description, Quantity and UnitSellingPrice. On read a line returns CustomerTransactionLineId, LineNumber, Description, Quantity, UnitSellingPrice and LineAmount (= Quantity x UnitSellingPrice, server-computed). Line-level tax is not modelled: Oracle exposes it through a receivablesInvoiceLineTaxLines child that this simulator does not implement.",
            "x-queryable": false
          },
          "receivablesInvoiceInstallments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "InstallmentId": {
                  "type": "number",
                  "description": "Primary key of the installment (Oracle payment_schedule_id).",
                  "readOnly": true,
                  "x-queryable": true
                },
                "InstallmentSequenceNumber": {
                  "type": "number",
                  "description": "1-based installment number within the invoice.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "InstallmentDueDate": {
                  "type": "string",
                  "format": "date",
                  "description": "yyyy-MM-dd. The date this installment is due.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "OriginalAmount": {
                  "type": "number",
                  "description": "Original installment amount. Immutable after creation.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "InstallmentBalanceDue": {
                  "type": "number",
                  "description": "The outstanding balance on the installment: OriginalAmount less AmountPaid. NOT reduced by a dispute — see DisputeAmount.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "AmountPaid": {
                  "type": "number",
                  "description": "Total applied to this installment from APP-status receipt applications.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "InstallmentAmountAdjusted": {
                  "type": "number",
                  "description": "The amount that was adjusted on the installment. Always 0 here; adjustments are not implemented.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "InstallmentAmountCredited": {
                  "type": "number",
                  "description": "The amount that was credited on the installment. This is what an approved credit memo produces, and it is a different thing from an amount in dispute.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "PendingAdjustmentAmount": {
                  "type": "number",
                  "description": "Adjustment submitted and not yet approved. Always 0 here.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "DisputeAmount": {
                  "type": "number",
                  "description": "The amount in dispute on the installment. May be PARTIAL, and does NOT reduce InstallmentBalanceDue: the contested money is still outstanding. Treat > 0 as a reason not to pursue collection, not as a reduction.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "DisputeDate": {
                  "type": "string",
                  "format": "date",
                  "description": "The date a dispute was recorded against the installment. Null when nothing is in dispute.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "InstallmentStatus": {
                  "type": "string",
                  "description": "OP (open) or CL (closed).",
                  "readOnly": true,
                  "x-queryable": false
                },
                "InstallmentClosedDate": {
                  "type": "string",
                  "format": "date",
                  "description": "Set when InstallmentBalanceDue reaches 0; cleared if a reversal re-opens it. Null while open.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "InstallmentGLClosedDate": {
                  "type": "string",
                  "format": "date",
                  "description": "General-ledger close date. Null unless the installment is closed.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "PaymentDaysLate": {
                  "type": "number",
                  "description": "max(0, today - InstallmentDueDate) while OP; 0 once CL. Computed live on read.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Timestamp of the most recent server-side change to this installment.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "The invoice's installment schedule, returned when requested with expand=receivablesInvoiceInstallments (or expand=all) and byte-identical to reading child/receivablesInvoiceInstallments. Derived from PaymentTerms on create; replace it with POST action/splitInstallments rather than by writing this array.",
            "readOnly": true,
            "x-queryable": false
          }
        },
        "required": [
          "BusinessUnit",
          "TransactionType",
          "TransactionSource",
          "BillToCustomerNumber",
          "InvoiceCurrencyCode",
          "receivablesInvoiceLines"
        ]
      },
      "ReceivablesInvoiceCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceivablesInvoice"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "ReceivablesInvoiceLine": {
        "type": "object",
        "description": "One line of a receivables invoice.",
        "properties": {
          "CustomerTransactionLineId": {
            "type": "number",
            "description": "Primary key of the line. Generated; never sent on create.",
            "readOnly": true,
            "x-queryable": false
          },
          "LineNumber": {
            "type": "number",
            "description": "1-based line number within the invoice. Assigned in order when omitted.",
            "x-queryable": false
          },
          "Description": {
            "type": "string",
            "description": "Free-text line description.",
            "x-queryable": false
          },
          "Quantity": {
            "type": "number",
            "description": "Quantity billed.",
            "x-queryable": false
          },
          "UnitSellingPrice": {
            "type": "number",
            "description": "Price per unit in the invoice currency.",
            "x-queryable": false
          },
          "LineAmount": {
            "type": "number",
            "description": "Quantity x UnitSellingPrice, computed server-side. Sending it on create is refused.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "ReceivablesInvoiceLineCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceivablesInvoiceLine"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "ReceivablesInvoiceInstallment": {
        "type": "object",
        "description": "One installment (payment schedule) of a receivables invoice.",
        "properties": {
          "InstallmentId": {
            "type": "number",
            "description": "Primary key of the installment (Oracle payment_schedule_id).",
            "readOnly": true,
            "x-queryable": true
          },
          "InstallmentSequenceNumber": {
            "type": "number",
            "description": "1-based installment number within the invoice.",
            "readOnly": true,
            "x-queryable": true
          },
          "InstallmentDueDate": {
            "type": "string",
            "format": "date",
            "description": "yyyy-MM-dd. The date this installment is due.",
            "readOnly": true,
            "x-queryable": true
          },
          "OriginalAmount": {
            "type": "number",
            "description": "Original installment amount. Immutable after creation.",
            "readOnly": true,
            "x-queryable": true
          },
          "InstallmentBalanceDue": {
            "type": "number",
            "description": "The outstanding balance on the installment: OriginalAmount less AmountPaid. NOT reduced by a dispute — see DisputeAmount.",
            "readOnly": true,
            "x-queryable": false
          },
          "AmountPaid": {
            "type": "number",
            "description": "Total applied to this installment from APP-status receipt applications.",
            "readOnly": true,
            "x-queryable": false
          },
          "InstallmentAmountAdjusted": {
            "type": "number",
            "description": "The amount that was adjusted on the installment. Always 0 here; adjustments are not implemented.",
            "readOnly": true,
            "x-queryable": false
          },
          "InstallmentAmountCredited": {
            "type": "number",
            "description": "The amount that was credited on the installment. This is what an approved credit memo produces, and it is a different thing from an amount in dispute.",
            "readOnly": true,
            "x-queryable": false
          },
          "PendingAdjustmentAmount": {
            "type": "number",
            "description": "Adjustment submitted and not yet approved. Always 0 here.",
            "readOnly": true,
            "x-queryable": false
          },
          "DisputeAmount": {
            "type": "number",
            "description": "The amount in dispute on the installment. May be PARTIAL, and does NOT reduce InstallmentBalanceDue: the contested money is still outstanding. Treat > 0 as a reason not to pursue collection, not as a reduction.",
            "readOnly": true,
            "x-queryable": false
          },
          "DisputeDate": {
            "type": "string",
            "format": "date",
            "description": "The date a dispute was recorded against the installment. Null when nothing is in dispute.",
            "readOnly": true,
            "x-queryable": false
          },
          "InstallmentStatus": {
            "type": "string",
            "description": "OP (open) or CL (closed).",
            "readOnly": true,
            "x-queryable": false
          },
          "InstallmentClosedDate": {
            "type": "string",
            "format": "date",
            "description": "Set when InstallmentBalanceDue reaches 0; cleared if a reversal re-opens it. Null while open.",
            "readOnly": true,
            "x-queryable": false
          },
          "InstallmentGLClosedDate": {
            "type": "string",
            "format": "date",
            "description": "General-ledger close date. Null unless the installment is closed.",
            "readOnly": true,
            "x-queryable": false
          },
          "PaymentDaysLate": {
            "type": "number",
            "description": "max(0, today - InstallmentDueDate) while OP; 0 once CL. Computed live on read.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Timestamp of the most recent server-side change to this installment.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "ReceivablesInvoiceInstallmentCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceivablesInvoiceInstallment"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "SplitInstallmentsRequest": {
        "type": "object",
        "description": "Body of the splitInstallments action. This is NOT a receivables invoice.",
        "properties": {
          "installmentPayload": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "InstallmentSequenceNumber": {
                  "type": "string",
                  "description": "1-based position of this installment. Optional; assigned in array order when omitted."
                },
                "OriginalAmount": {
                  "type": "string",
                  "description": "Amount of this installment, as a decimal string. All amounts together must equal the invoice's EnteredAmount."
                },
                "InstallmentDueDate": {
                  "type": "string",
                  "description": "yyyy-MM-dd due date for this installment."
                }
              },
              "required": [
                "OriginalAmount",
                "InstallmentDueDate"
              ]
            },
            "description": "The complete replacement schedule. Every installment the invoice should end up with, not just the new ones — the existing schedule is replaced. Amounts must sum to the invoice's entered amount."
          }
        },
        "required": [
          "installmentPayload"
        ]
      },
      "Contact": {
        "type": "object",
        "properties": {
          "PartyId": {
            "type": "number",
            "description": "Primary key. The PERSON party for this contact - the contact's own party, not the customer's.",
            "readOnly": true,
            "x-queryable": true
          },
          "PartyNumber": {
            "type": "string",
            "description": "Alternate key, and the value the item path uses: /contacts/{PartyNumber}. NOT filterable here: Oracle marks it queryable and this simulator does not implement the filter, so q=PartyNumber=... is refused with a message saying the gap is here rather than in your query. Same for ContactName and LastUpdateDate.",
            "readOnly": true,
            "x-queryable": true
          },
          "ContactName": {
            "type": "string",
            "description": "Derived name of the contact.",
            "readOnly": true,
            "x-queryable": true
          },
          "ContactUniqueName": {
            "type": "string",
            "description": "Unique contact name shown on screens. Equal to ContactName here, because the simulator has nothing to disambiguate with.",
            "readOnly": true,
            "x-queryable": false
          },
          "FirstName": {
            "type": "string",
            "description": "Given name.",
            "readOnly": true,
            "x-queryable": true
          },
          "LastName": {
            "type": "string",
            "description": "Family name.",
            "readOnly": true,
            "x-queryable": true
          },
          "JobTitle": {
            "type": "string",
            "description": "Free-text job title.",
            "readOnly": true,
            "x-queryable": true
          },
          "EmailAddress": {
            "type": "string",
            "description": "Primary email address. The same value appears as a ContactPoint of type EMAIL.",
            "readOnly": true,
            "x-queryable": true
          },
          "WorkPhoneNumber": {
            "type": "string",
            "description": "Work phone. The seeded number is a work number; it also appears as a ContactPoint of type PHONE.",
            "readOnly": true,
            "x-queryable": false
          },
          "MobileNumber": {
            "type": "string",
            "description": "Mobile phone. Always null in this simulator - present rather than absent, because an absent attribute reads as unsupported.",
            "readOnly": true,
            "x-queryable": false
          },
          "HomePhoneNumber": {
            "type": "string",
            "description": "Home phone. Always null in this simulator.",
            "readOnly": true,
            "x-queryable": false
          },
          "FaxNumber": {
            "type": "string",
            "description": "Fax number. Always null in this simulator.",
            "readOnly": true,
            "x-queryable": false
          },
          "PartyStatus": {
            "type": "string",
            "description": "A (Active) or I (Inactive). An inactive contact is rejected with AR-1031 if used as BillToContact on an invoice.",
            "readOnly": true,
            "x-queryable": true
          },
          "PartyType": {
            "type": "string",
            "description": "Always PERSON on this resource.",
            "readOnly": true,
            "x-queryable": false
          },
          "AccountPartyId": {
            "type": "number",
            "description": "The customer account this person is a contact for.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Timestamp of the most recent server-side change to the contact. Format: ISO-8601 UTC with millisecond precision and a +0000 offset. Use as an incremental-sync watermark: q=LastUpdateDate > '2026-06-25T12:00:00.000+0000' (URL-encoded). This resource carried no watermark at all until 2026-08-05, so a consumer had to re-read every contact on every pull.",
            "readOnly": true,
            "x-queryable": true
          },
          "ContactPoint": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "ContactPointId": {
                  "type": "number",
                  "description": "Primary key of the channel. This identifies the CHANNEL, not the person — the person is PartyNumber on the parent.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ContactPointType": {
                  "type": "string",
                  "description": "EMAIL or PHONE.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "EmailAddress": {
                  "type": "string",
                  "description": "Populated when ContactPointType is EMAIL, otherwise null.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "RawPhoneNumber": {
                  "type": "string",
                  "description": "Populated when ContactPointType is PHONE, otherwise null.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "FormattedPhoneNumber": {
                  "type": "string",
                  "description": "Display form of RawPhoneNumber. Null for an EMAIL channel.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "PrimaryFlag": {
                  "type": "boolean",
                  "description": "True when this is the primary channel of its type.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "Status": {
                  "type": "string",
                  "description": "A (active) or I (inactive).",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreatedBy": {
                  "type": "string",
                  "description": "Audit user that created the row.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreationDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit creation timestamp.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdatedBy": {
                  "type": "string",
                  "description": "Audit user of the most recent change.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit timestamp of the most recent change.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "Child collection, one row per communication channel. Present only when ?expand=ContactPoint was sent — a contact read without it carries no ContactPoint key at all. Also readable at /contacts/{PartyNumber}/child/ContactPoint.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "ContactCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contact"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "ContactPoint": {
        "type": "object",
        "description": "One communication channel of a contact. x-queryable caveat: This child implements no q filtering at all, and Oracle's queryable flag for it was never confirmed. Filter the parent contact instead, or confirm against your instance's describe.",
        "properties": {
          "ContactPointId": {
            "type": "number",
            "description": "Primary key of the channel. This identifies the CHANNEL, not the person — the person is PartyNumber on the parent.",
            "readOnly": true,
            "x-queryable": false
          },
          "ContactPointType": {
            "type": "string",
            "description": "EMAIL or PHONE.",
            "readOnly": true,
            "x-queryable": false
          },
          "EmailAddress": {
            "type": "string",
            "description": "Populated when ContactPointType is EMAIL, otherwise null.",
            "readOnly": true,
            "x-queryable": false
          },
          "RawPhoneNumber": {
            "type": "string",
            "description": "Populated when ContactPointType is PHONE, otherwise null.",
            "readOnly": true,
            "x-queryable": false
          },
          "FormattedPhoneNumber": {
            "type": "string",
            "description": "Display form of RawPhoneNumber. Null for an EMAIL channel.",
            "readOnly": true,
            "x-queryable": false
          },
          "PrimaryFlag": {
            "type": "boolean",
            "description": "True when this is the primary channel of its type.",
            "readOnly": true,
            "x-queryable": false
          },
          "Status": {
            "type": "string",
            "description": "A (active) or I (inactive).",
            "readOnly": true,
            "x-queryable": false
          },
          "CreatedBy": {
            "type": "string",
            "description": "Audit user that created the row.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreationDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit creation timestamp.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdatedBy": {
            "type": "string",
            "description": "Audit user of the most recent change.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit timestamp of the most recent change.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "ContactPointCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContactPoint"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "StandardReceipt": {
        "type": "object",
        "properties": {
          "StandardReceiptId": {
            "type": "string",
            "description": "System-generated receipt identifier.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReceiptNumber": {
            "type": "string",
            "maxLength": 30,
            "description": "Receipt number. Optional; derive a stable unique value from your payment reference so a retry is detected as a duplicate.",
            "x-queryable": true
          },
          "ReceiptMethod": {
            "type": "string",
            "description": "Configured receipt method name.",
            "x-queryable": false
          },
          "BusinessUnit": {
            "type": "string",
            "maxLength": 240,
            "description": "Configured business unit name.",
            "x-queryable": true
          },
          "Amount": {
            "type": "number",
            "description": "Receipt amount in Currency. Must be positive.",
            "x-queryable": false
          },
          "Currency": {
            "type": "string",
            "maxLength": 3,
            "description": "Configured currency code.",
            "x-queryable": false
          },
          "ReceiptDate": {
            "type": "string",
            "format": "date",
            "description": "Date the payment was received (YYYY-MM-DD).",
            "x-queryable": true
          },
          "AccountingDate": {
            "type": "string",
            "format": "date",
            "description": "Accounting date; defaults to ReceiptDate.",
            "x-queryable": false
          },
          "CustomerAccountNumber": {
            "type": "string",
            "maxLength": 30,
            "description": "Customer account. Omit to create an unidentified receipt.",
            "x-queryable": true
          },
          "CustomerName": {
            "type": "string",
            "maxLength": 360,
            "description": "Customer name.",
            "x-queryable": true
          },
          "CustomerSite": {
            "type": "string",
            "maxLength": 150,
            "description": "Customer site (bill-to location).",
            "x-queryable": true
          },
          "CustomerBankAccountNumber": {
            "type": "string",
            "maxLength": 30,
            "description": "Customer bank account number.",
            "x-queryable": false
          },
          "State": {
            "type": "string",
            "description": "Application dimension: APPLIED, UNAPPLIED, UNIDENTIFIED, INSUFFICIENT FUNDS, REVERSE PAYMENT, STOP PAYMENT.",
            "readOnly": true,
            "x-queryable": false
          },
          "Status": {
            "type": "string",
            "description": "Lifecycle dimension: CONFIRMED, CLEARED, APPROVED, REMITTED. Separate from State: CONFIRMED does not mean the invoice is paid.",
            "readOnly": true,
            "x-queryable": false
          },
          "UnappliedAmount": {
            "type": "number",
            "description": "Amount not yet applied to any transaction.",
            "readOnly": true,
            "x-queryable": false
          },
          "StructuredPaymentReference": {
            "type": "string",
            "description": "Structured payment reference. A common place to carry an external payment identifier.",
            "x-queryable": false
          },
          "DocumentNumber": {
            "type": "string",
            "maxLength": 30,
            "description": "Document number.",
            "x-queryable": false
          },
          "Comments": {
            "type": "string",
            "description": "Free-text comments.",
            "x-queryable": false
          },
          "MaturityDate": {
            "type": "string",
            "format": "date",
            "description": "Maturity date.",
            "x-queryable": false
          },
          "PostmarkDate": {
            "type": "string",
            "format": "date",
            "description": "Postmark date.",
            "x-queryable": false
          },
          "ConversionDate": {
            "type": "string",
            "format": "date",
            "description": "Currency conversion date.",
            "x-queryable": false
          },
          "ConversionRate": {
            "type": "number",
            "description": "Currency conversion rate.",
            "x-queryable": false
          },
          "ConversionRateType": {
            "type": "string",
            "maxLength": 30,
            "description": "Currency conversion rate type.",
            "x-queryable": false
          },
          "RemittanceBankAccountNumber": {
            "type": "string",
            "description": "Remittance bank account number. Writable: it is how you name the account, and the bank and branch names below are resolved from it.",
            "x-queryable": false
          },
          "RemittanceBankName": {
            "type": "string",
            "maxLength": 360,
            "description": "The remittance bank's name, RESOLVED from RemittanceBankAccountNumber rather than sent. Read-only in Oracle and here - supply the account number and read this back. Null when the receipt names no remittance account, or names one this environment has not configured.",
            "readOnly": true,
            "x-queryable": false
          },
          "RemittanceBankBranch": {
            "type": "string",
            "maxLength": 360,
            "description": "The remittance bank's branch name, resolved the same way as RemittanceBankName and equally read-only.",
            "readOnly": true,
            "x-queryable": false
          },
          "RemittanceBankAllowOverride": {
            "type": "boolean",
            "description": "Whether the remittance bank may be overridden.",
            "x-queryable": false
          },
          "RemittanceBankDepositDate": {
            "type": "string",
            "format": "date",
            "description": "Remittance bank deposit date.",
            "x-queryable": false
          },
          "CardHolderFirstName": {
            "type": "string",
            "description": "Card holder first name.",
            "x-queryable": false
          },
          "CardHolderLastName": {
            "type": "string",
            "description": "Card holder last name.",
            "x-queryable": false
          },
          "CreditCardTokenNumber": {
            "type": "string",
            "description": "Tokenised card reference. Never send a full card number.",
            "x-queryable": false
          },
          "CreditCardExpirationDate": {
            "type": "string",
            "format": "date",
            "description": "Card expiration date.",
            "x-queryable": false
          },
          "CreditCardIssuerCode": {
            "type": "string",
            "maxLength": 30,
            "description": "Card issuer code.",
            "x-queryable": false
          },
          "CreditCardAuthorizationRequestIdentifier": {
            "type": "number",
            "description": "Card authorization request identifier. Oracle types this as an integer, so it holds a numeric authorization request id — not a payment-processor reference. A processor identifier such as a Stripe ch_/pi_ value is not numeric and real Oracle rejects it: put it in StructuredPaymentReference instead. This simulator's column is text and will accept a non-numeric value, which is laxer than Oracle; do not rely on that.",
            "x-queryable": false
          },
          "VoiceAuthorizationCode": {
            "type": "string",
            "maxLength": 30,
            "description": "Voice authorization code.",
            "x-queryable": false
          },
          "standardReceiptDFF": {
            "type": "string",
            "description": "Descriptive flexfield payload.",
            "x-queryable": false
          },
          "standardReceiptGdf": {
            "type": "string",
            "description": "Global descriptive flexfield payload.",
            "x-queryable": false
          },
          "remittanceReferences": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "RemittanceReferenceId": {
                  "type": "number",
                  "description": "Primary key of the reference. Generated; read-only, and sending it is refused 400.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReceiptMatchBy": {
                  "type": "string",
                  "description": "What ReferenceNumber names. One of: Transaction Number, Balance Forward Billing Number, Contract Number, Purchase Order, Sales Order, Shipping Reference. Defaults to Transaction Number when omitted; any other value is refused 400. Only Transaction Number is resolved against invoices by AutoMatch.",
                  "x-queryable": false
                },
                "ReferenceNumber": {
                  "type": "string",
                  "description": "The customer's reference, e.g. the invoice number being paid. Max 50 characters. AutoMatch matches on this; a reference without it can never match.",
                  "x-queryable": false
                },
                "ReferenceAmount": {
                  "type": "number",
                  "description": "Amount the payer attributed to this reference, in the parent receipt's currency. Omit to let AutoMatch allocate from the receipt amount. An amount the currency cannot express is refused 400.",
                  "x-queryable": false
                },
                "CustomerReason": {
                  "type": "string",
                  "description": "Free-text reason supplied by the payer.",
                  "x-queryable": true
                },
                "CustomerReference": {
                  "type": "string",
                  "description": "Free-text reference supplied by the payer.",
                  "x-queryable": true
                },
                "CreatedBy": {
                  "type": "string",
                  "description": "Audit user that created the row.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreationDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit creation timestamp.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdatedBy": {
                  "type": "string",
                  "description": "Audit user of the most recent change.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit timestamp of the most recent change.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "Remittance references identifying what the payment is for. Accepted nested on create, and returned inline when ?expand=remittanceReferences is sent. A receipt with no reference can still be created; AutoMatch will have nothing to match it on. Also writable afterwards at /standardReceipts/{StandardReceiptId}/child/remittanceReferences.",
            "x-queryable": false
          },
          "CreatedBy": {
            "type": "string",
            "description": "Audit: creating principal.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreationDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit: creation timestamp.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdatedBy": {
            "type": "string",
            "description": "Audit: last updating principal.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit: last update timestamp.",
            "readOnly": true,
            "x-queryable": false
          }
        },
        "required": [
          "ReceiptMethod",
          "BusinessUnit",
          "Amount",
          "Currency",
          "ReceiptDate"
        ]
      },
      "StandardReceiptCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StandardReceipt"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "RemittanceReference": {
        "type": "object",
        "description": "One remittance reference on a standard receipt.",
        "properties": {
          "RemittanceReferenceId": {
            "type": "number",
            "description": "Primary key of the reference. Generated; read-only, and sending it is refused 400.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReceiptMatchBy": {
            "type": "string",
            "description": "What ReferenceNumber names. One of: Transaction Number, Balance Forward Billing Number, Contract Number, Purchase Order, Sales Order, Shipping Reference. Defaults to Transaction Number when omitted; any other value is refused 400. Only Transaction Number is resolved against invoices by AutoMatch.",
            "x-queryable": false
          },
          "ReferenceNumber": {
            "type": "string",
            "description": "The customer's reference, e.g. the invoice number being paid. Max 50 characters. AutoMatch matches on this; a reference without it can never match.",
            "x-queryable": false
          },
          "ReferenceAmount": {
            "type": "number",
            "description": "Amount the payer attributed to this reference, in the parent receipt's currency. Omit to let AutoMatch allocate from the receipt amount. An amount the currency cannot express is refused 400.",
            "x-queryable": false
          },
          "CustomerReason": {
            "type": "string",
            "description": "Free-text reason supplied by the payer.",
            "x-queryable": true
          },
          "CustomerReference": {
            "type": "string",
            "description": "Free-text reference supplied by the payer.",
            "x-queryable": true
          },
          "CreatedBy": {
            "type": "string",
            "description": "Audit user that created the row.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreationDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit creation timestamp.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdatedBy": {
            "type": "string",
            "description": "Audit user of the most recent change.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit timestamp of the most recent change.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "RemittanceReferenceCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RemittanceReference"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "ReceivablesCreditMemo": {
        "type": "object",
        "properties": {
          "CustomerTransactionId": {
            "type": "number",
            "description": "Primary key. Shared id space with invoices: an id is either an invoice or a credit memo, never both.",
            "readOnly": true,
            "x-queryable": true
          },
          "TransactionNumber": {
            "type": "string",
            "maxLength": 20,
            "description": "The credit memo number. This is the identifier to reconcile on.",
            "readOnly": true,
            "x-queryable": true
          },
          "TransactionDate": {
            "type": "string",
            "format": "date",
            "description": "The credit memo date, YYYY-MM-DD.",
            "readOnly": true,
            "x-queryable": true
          },
          "TransactionType": {
            "type": "string",
            "maxLength": 20,
            "description": "The transaction type. Always 'Credit Memo' on this resource - it is queryable in Oracle and therefore filterable here, but it cannot select anything else.",
            "readOnly": true,
            "x-queryable": true
          },
          "TransactionSource": {
            "type": "string",
            "maxLength": 50,
            "description": "The batch source the credit memo was created under.",
            "readOnly": true,
            "x-queryable": true
          },
          "BusinessUnit": {
            "type": "string",
            "maxLength": 240,
            "description": "The business unit name.",
            "readOnly": true,
            "x-queryable": true
          },
          "CreditMemoCurrency": {
            "type": "string",
            "maxLength": 15,
            "description": "Currency code. Oracle's name for it on THIS resource; the invoice resource calls the same concept InvoiceCurrencyCode.",
            "readOnly": true,
            "x-queryable": true
          },
          "EnteredAmount": {
            "type": "number",
            "description": "The credit memo amount, stored POSITIVE. The crediting sense lives in the application, exactly as receipt applications work - do not assume a negative number.",
            "readOnly": true,
            "x-queryable": false
          },
          "TransactionBalanceDue": {
            "type": "number",
            "description": "The unapplied balance remaining on the credit memo. Zero once fully applied against transactions.",
            "readOnly": true,
            "x-queryable": false
          },
          "BillToCustomerNumber": {
            "type": "string",
            "maxLength": 30,
            "description": "The bill-to customer's ACCOUNT NUMBER, resolved on read. This is the value you pass back as CustomerAccountNumber when recording a receipt.",
            "readOnly": true,
            "x-queryable": true
          },
          "BillToCustomerName": {
            "type": "string",
            "maxLength": 360,
            "description": "The bill-to customer's account name, resolved on read. Not queryable in Oracle.",
            "readOnly": true,
            "x-queryable": false
          },
          "BillToSite": {
            "type": "string",
            "maxLength": 150,
            "description": "The bill-to site name, resolved on read. Null when the credit memo sits at the account level rather than a site.",
            "readOnly": true,
            "x-queryable": true
          },
          "BillToContact": {
            "type": "string",
            "maxLength": 160,
            "description": "The bill-to contact's name, resolved on read from the contact recorded on the transaction. Null when no contact is set.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreditMemoStatus": {
            "type": "string",
            "description": "The level of completion of the credit memo. Oracle documents exactly three values, and this resource emits them: Complete, Incomplete, Frozen (default Complete). Not filterable - Oracle does not mark it queryable here, unlike InvoiceStatus on receivablesInvoices.",
            "readOnly": true,
            "x-queryable": false
          },
          "RecipientEmail": {
            "type": "string",
            "maxLength": 1000,
            "description": "Email address of the customer contact who receives printed transactions. The invoice resource calls the same value Email; this resource's name for it is RecipientEmail.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreditReason": {
            "type": "string",
            "maxLength": 255,
            "description": "Oracle: \"Reason the credit memo was created or applied.\" Sent on create and returned on read. Oracle documents no allowed-value list, so any text is accepted rather than validated against a set this simulator would have invented.",
            "x-queryable": false
          },
          "DeliveryMethod": {
            "type": "string",
            "maxLength": 30,
            "description": "The delivery method recorded on the transaction.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreationDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "When the credit memo was created. Oracle wire format.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "When the credit memo was last updated. Oracle wire format. Maintained by the database, not settable.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "ReceivablesCreditMemoCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceivablesCreditMemo"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "ReceivablesCreditMemoLine": {
        "type": "object",
        "description": "The lines that were created.",
        "properties": {
          "CustomerTransactionLineId": {
            "type": "number",
            "description": "Primary key of the line. Generated; never sent on create.",
            "readOnly": true,
            "x-queryable": false
          },
          "LineNumber": {
            "type": "number",
            "description": "1-based line number within the credit memo. The one attribute Oracle marks required on create; assigned in order when omitted.",
            "x-queryable": false
          },
          "LineDescription": {
            "type": "string",
            "description": "Free-text line description. The invoice resource calls this Description.",
            "x-queryable": false
          },
          "LineAmountCredit": {
            "type": "number",
            "description": "The amount this line credits, positive. The invoice resource calls its equivalent LineAmount and derives it from quantity and price; here the amount is what you send, and the credit memo's EnteredAmount is the sum of these.",
            "x-queryable": false
          },
          "LineQuantityCredit": {
            "type": "number",
            "description": "Quantity credited. The invoice resource calls this Quantity.",
            "x-queryable": false
          },
          "UnitSellingPrice": {
            "type": "number",
            "description": "Price per unit in the credit memo currency - the one attribute name this resource shares with an invoice line.",
            "x-queryable": false
          }
        }
      },
      "ReceivablesCreditMemoLineCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceivablesCreditMemoLine"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "ReceivablesAdjustment": {
        "type": "object",
        "properties": {
          "AdjustmentId": {
            "type": "number",
            "description": "Primary key. The identifier of the adjustment.",
            "readOnly": true,
            "x-queryable": true
          },
          "AdjustmentNumber": {
            "type": "string",
            "maxLength": 20,
            "description": "The number assigned to the adjustment.",
            "readOnly": true,
            "x-queryable": true
          },
          "AdjustmentAmount": {
            "type": "number",
            "description": "The amount adjusted.",
            "readOnly": true,
            "x-queryable": false
          },
          "AdjustmentType": {
            "type": "string",
            "maxLength": 80,
            "description": "What part of the transaction is adjusted. Oracle's values: Charges, Freight, Invoice (transaction header), Line, Tax.",
            "readOnly": true,
            "x-queryable": false
          },
          "AdjustmentReason": {
            "type": "string",
            "maxLength": 80,
            "description": "The reason code assigned to the adjustment. Oracle publishes no fixed list - reason codes are customer-defined lookups.",
            "readOnly": true,
            "x-queryable": false
          },
          "AdjustmentDate": {
            "type": "string",
            "format": "date",
            "description": "The date of the adjustment.",
            "readOnly": true,
            "x-queryable": false
          },
          "AccountingDate": {
            "type": "string",
            "format": "date",
            "description": "The accounting date of the adjustment.",
            "readOnly": true,
            "x-queryable": false
          },
          "Status": {
            "type": "string",
            "maxLength": 80,
            "description": "The adjustment's approval status. Oracle's values: Pending Approval, Approved, Rejected, More Research - decided by the approval limits for the item's currency. Only an Approved adjustment moves a transaction balance.",
            "readOnly": true,
            "x-queryable": false
          },
          "CustomerTransactionId": {
            "type": "number",
            "description": "The adjusted transaction.",
            "readOnly": true,
            "x-queryable": true
          },
          "TransactionNumber": {
            "type": "string",
            "description": "The adjusted transaction's number.",
            "readOnly": true,
            "x-queryable": true
          },
          "TransactionClass": {
            "type": "string",
            "description": "The transaction class of the adjusted transaction. Oracle's values: Invoice, Debit Memo, Credit Memo. Null where the transaction's type is not one of those three - a voided transaction has no Oracle class, and emitting one would teach a value a real pod never sends.",
            "readOnly": true,
            "x-queryable": true
          },
          "BillToSiteUseId": {
            "type": "number",
            "description": "The bill-to site business purpose associated with the adjustment.",
            "readOnly": true,
            "x-queryable": true
          },
          "Currency": {
            "type": "string",
            "maxLength": 15,
            "description": "The adjustment's currency code.",
            "readOnly": true,
            "x-queryable": false
          },
          "BusinessUnit": {
            "type": "string",
            "maxLength": 240,
            "description": "The business unit of the adjusted transaction.",
            "readOnly": true,
            "x-queryable": false
          },
          "InstallmentNumber": {
            "type": "number",
            "description": "The adjusted installment's number. Null for a header-level adjustment.",
            "readOnly": true,
            "x-queryable": false
          },
          "InstallmentBalance": {
            "type": "number",
            "description": "The adjusted installment's remaining balance.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreatedBy": {
            "type": "string",
            "description": "Who created the adjustment.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreationDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "When it was created. Oracle wire format.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdatedBy": {
            "type": "string",
            "description": "Who last updated it.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "When it was last updated. Oracle wire format.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "ReceivablesAdjustmentCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceivablesAdjustment"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "ReceiptMethod": {
        "type": "object",
        "properties": {
          "ReceiptMethodId": {
            "type": "number",
            "description": "Primary key. The identifier of the receipt method.",
            "readOnly": true,
            "x-queryable": true
          },
          "Name": {
            "type": "string",
            "maxLength": 30,
            "description": "The receipt method name. THIS is the value to send as ReceiptMethod on a standard receipt - the API matches by name, not by id.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReceiptClass": {
            "type": "string",
            "maxLength": 30,
            "description": "The name of the receipt class, which identifies the steps involved in processing receipts created with this method.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreationDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "When the receipt method was created. Oracle wire format.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "When the receipt method was last updated. Oracle wire format.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreatedBy": {
            "type": "string",
            "maxLength": 64,
            "description": "Documented by Oracle. This simulator records no user attribution on setup rows, so it is always null rather than a fabricated user name.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdatedBy": {
            "type": "string",
            "maxLength": 64,
            "description": "Documented by Oracle. Always null here, for the same reason as CreatedBy.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "ReceiptMethodCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceiptMethod"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "CustomerAccountSitesLOV": {
        "type": "object",
        "description": "x-queryable caveat: Oracle's own queryable flag for this resource was never confirmed, so the filterable set here is this simulator's and may be narrower or wider than a real pod's. The four attributes this environment leaves null are excluded deliberately. Confirm against your instance's customerAccountSitesLOV/describe before relying on a filter here.",
        "properties": {
          "SiteUseId": {
            "type": "number",
            "description": "Primary key. Identifies the customer account site use.",
            "readOnly": true,
            "x-queryable": true
          },
          "SiteName": {
            "type": "string",
            "description": "Site name. This is the value to pass as BillToSite when creating an invoice.",
            "readOnly": true,
            "x-queryable": true
          },
          "PrimarySite": {
            "type": "string",
            "description": "Y when this is the customer's primary site use, otherwise N. Oracle types it as a single character, not a boolean. A customer may have Y on more than one purpose.",
            "readOnly": true,
            "x-queryable": true
          },
          "CustomerAccountId": {
            "type": "number",
            "description": "Owning customer account.",
            "readOnly": true,
            "x-queryable": true
          },
          "AccountNumber": {
            "type": "string",
            "description": "Customer account number.",
            "readOnly": true,
            "x-queryable": true
          },
          "CustomerName": {
            "type": "string",
            "description": "Customer name.",
            "readOnly": true,
            "x-queryable": true
          },
          "PartyNumber": {
            "type": "string",
            "description": "Trading Community party number.",
            "readOnly": true,
            "x-queryable": true
          },
          "AccountDescription": {
            "type": "string",
            "description": "Account description. Documented by Oracle; not populated in this tenant, so always null.",
            "readOnly": true,
            "x-queryable": false
          },
          "SetName": {
            "type": "string",
            "description": "Reference data set name. Documented by Oracle; this simulator models no reference data sets, so always null.",
            "readOnly": true,
            "x-queryable": false
          },
          "TaxpayerIdentificationNumber": {
            "type": "string",
            "description": "Taxpayer identification number. Documented by Oracle; not populated in this tenant, so always null.",
            "readOnly": true,
            "x-queryable": false
          },
          "TaxRegistrationNumber": {
            "type": "string",
            "description": "Tax registration number. Documented by Oracle; not populated in this tenant, so always null.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "CustomerAccountSitesLOVCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerAccountSitesLOV"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "ReceivablesCustomerAccountActivity": {
        "type": "object",
        "properties": {
          "AccountId": {
            "type": "number",
            "description": "Customer account identifier. The key of the item path on this resource, for BOTH the account and the site variant.",
            "readOnly": true,
            "x-queryable": true
          },
          "AccountNumber": {
            "type": "string",
            "description": "Customer account number, the value you pass as CustomerAccountNumber on a receipt.",
            "readOnly": true,
            "x-queryable": true
          },
          "CustomerId": {
            "type": "number",
            "description": "Trading Community party id of the customer.",
            "readOnly": true,
            "x-queryable": true
          },
          "CustomerName": {
            "type": "string",
            "description": "Customer name.",
            "readOnly": true,
            "x-queryable": true
          },
          "TaxpayerIdentificationNumber": {
            "type": "string",
            "description": "Documented by Oracle; not populated in this simulator, so always null.",
            "readOnly": true,
            "x-queryable": true
          },
          "TaxRegistrationNumber": {
            "type": "string",
            "description": "Documented by Oracle; not populated in this simulator, so always null.",
            "readOnly": true,
            "x-queryable": true
          },
          "TotalOpenReceivablesForAccount": {
            "type": "number",
            "description": "Total Transaction Due Amount LESS Pending Application Amount. Expressed in the LEDGER currency (USD here), NOT the invoice currency — this resource carries no currency attribute because Oracle defines none. Can be NEGATIVE when a customer has unapplied cash exceeding what they owe. Voided transactions are excluded.",
            "readOnly": true,
            "x-queryable": false
          },
          "TotalTransactionsDueForAccount": {
            "type": "number",
            "description": "Total amount due across the customer's open transactions, in the LEDGER currency. This is an AMOUNT, not a past-due filter — it is not restricted to overdue items.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreatedBy": {
            "type": "string",
            "description": "Audit user that created the account.",
            "readOnly": true,
            "x-queryable": true
          },
          "CreationDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit creation timestamp.",
            "readOnly": true,
            "x-queryable": true
          },
          "LastUpdatedBy": {
            "type": "string",
            "description": "Audit user of the most recent change.",
            "readOnly": true,
            "x-queryable": true
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit timestamp of the most recent change.",
            "readOnly": true,
            "x-queryable": true
          },
          "standardReceipts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "StandardReceiptId": {
                  "type": "number",
                  "description": "Primary key of the receipt. The full record is at /standardReceipts/{StandardReceiptId}.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReceiptNumber": {
                  "type": "string",
                  "description": "The receipt number as supplied when the receipt was created.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReceiptDate": {
                  "type": "string",
                  "format": "date",
                  "description": "yyyy-MM-dd date of the receipt.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ReceiptMethod": {
                  "type": "string",
                  "description": "Name of the receipt method the payment arrived by.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "Amount": {
                  "type": "number",
                  "description": "Total amount received, in Currency.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "Currency": {
                  "type": "string",
                  "description": "ISO 4217 currency of the receipt.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "State": {
                  "type": "string",
                  "description": "APPLIED, UNAPPLIED, UNIDENTIFIED, REVERSE PAYMENT, INSUFFICIENT FUNDS or STOP PAYMENT. This child publishes State and NOT Status, unlike the top-level standardReceipts resource.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "UnappliedAmount": {
                  "type": "number",
                  "description": "Cash on this receipt not yet applied to any transaction.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit timestamp of the most recent change.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "The account's receipts. Returned when requested with expand=standardReceipts (or expand=all), and identical to reading the child collection directly.",
            "readOnly": true,
            "x-queryable": false
          },
          "standardReceiptApplications": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "ApplicationId": {
                  "type": "number",
                  "description": "Primary key of the application.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "StandardReceiptId": {
                  "type": "number",
                  "description": "The receipt whose cash was applied. Read it at /standardReceipts/{StandardReceiptId}.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReceiptNumber": {
                  "type": "string",
                  "description": "Receipt number of that receipt.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionId": {
                  "type": "number",
                  "description": "CustomerTransactionId of the invoice the cash was applied to.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionNumber": {
                  "type": "string",
                  "description": "TransactionNumber of that invoice.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceInstallmentId": {
                  "type": "number",
                  "description": "InstallmentId the application settled. Null once a reversal has detached it.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ApplicationAmount": {
                  "type": "number",
                  "description": "Amount applied, in EnteredCurrency.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "EnteredCurrency": {
                  "type": "string",
                  "description": "ISO 4217 currency of the receipt this application came from.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ApplicationDate": {
                  "type": "string",
                  "format": "date",
                  "description": "yyyy-MM-dd date the application was made.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "AccountingDate": {
                  "type": "string",
                  "format": "date",
                  "description": "yyyy-MM-dd accounting date of the application.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ApplicationStatus": {
                  "type": "string",
                  "description": "APP for an application in force, REV once reversed. Only APP rows reduce an invoice balance; a REV row is history.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionStatus": {
                  "type": "string",
                  "description": "Open or Closed — whether the invoice still carries a balance.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "CreatedBy": {
                  "type": "string",
                  "description": "Audit user that created the row.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreationDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit creation timestamp.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdatedBy": {
                  "type": "string",
                  "description": "Audit user of the most recent change.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit timestamp of the most recent change.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "Receipt applications against the account's transactions. Returned with expand=standardReceiptApplications (or expand=all).",
            "readOnly": true,
            "x-queryable": false
          },
          "transactionPaymentSchedules": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "InstallmentId": {
                  "type": "number",
                  "description": "Primary key of the installment (payment schedule).",
                  "readOnly": true,
                  "x-queryable": true
                },
                "InstallmentNumber": {
                  "type": "number",
                  "description": "Sequence of this installment within its transaction.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "InstallmentStatus": {
                  "type": "string",
                  "description": "Open or Closed. Note the receivablesInvoiceInstallments child publishes the same underlying state as OP or CL — each resource uses Oracle's vocabulary for itself, so do not carry a value across.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "PaymentScheduleDueDate": {
                  "type": "string",
                  "format": "date",
                  "description": "yyyy-MM-dd date this installment falls due.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "TotalOriginalAmount": {
                  "type": "number",
                  "description": "Original amount of the installment, in EnteredCurrency.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "TotalBalanceAmount": {
                  "type": "number",
                  "description": "Amount still outstanding on the installment.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "TransactionId": {
                  "type": "number",
                  "description": "CustomerTransactionId of the transaction this installment belongs to.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "TransactionNumber": {
                  "type": "string",
                  "description": "Transaction number of that transaction.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "TransactionDate": {
                  "type": "string",
                  "format": "date",
                  "description": "yyyy-MM-dd date the transaction bears.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "TransactionType": {
                  "type": "string",
                  "maxLength": 20,
                  "description": "Transaction type — Invoice, Credit Memo, and so on.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "EnteredCurrency": {
                  "type": "string",
                  "description": "ISO 4217 currency the transaction was entered in.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "TransactionSourceName": {
                  "type": "string",
                  "description": "Batch source the transaction was created under. Oracle's name for it on THIS child; the receivablesInvoices resource calls the same value TransactionSource. Not filterable and not sortable here - it is resolved from the transaction, not stored on the schedule row.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "PaymentDaysLate": {
                  "type": "number",
                  "description": "Days this installment is past its due date, floored at zero, and zero for a closed installment. Computed on read from the same rule the receivablesInvoiceInstallments child uses, so the two agree. Not usable as a sort key for that reason.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit timestamp of the most recent change.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "Installment-level payment schedules for the account's transactions. Returned with expand=transactionPaymentSchedules (or expand=all).",
            "readOnly": true,
            "x-queryable": false
          },
          "creditMemos": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "CreditMemoId": {
                  "type": "number",
                  "description": "Primary key of the credit memo. A credit memo is a transaction, so this is its CustomerTransactionId.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "CreditMemoNumber": {
                  "type": "string",
                  "description": "Transaction number of the credit memo.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "CreditMemoDate": {
                  "type": "string",
                  "format": "date",
                  "description": "yyyy-MM-dd date the credit memo bears.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreditMemoCurrency": {
                  "type": "string",
                  "description": "ISO 4217 currency of the credit memo.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreditMemoStatus": {
                  "type": "string",
                  "description": "Open or Closed — whether the credit memo still carries a balance. Derived from the open balance rather than stored, so it can never disagree with TotalBalanceAmount.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "TotalOriginalAmount": {
                  "type": "number",
                  "description": "Original amount of the credit memo, in CreditMemoCurrency.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "TotalBalanceAmount": {
                  "type": "number",
                  "description": "Amount still remaining on the credit memo.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "TransactionType": {
                  "type": "string",
                  "maxLength": 20,
                  "description": "Always Credit Memo on this child.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "InstallmentId": {
                  "type": "number",
                  "description": "The credit memo installment. Oracle publishes one; where a credit memo carries several schedules this reports the lowest installment number.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit timestamp of the most recent change.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "Credit memos belonging to the account. Returned with expand=creditMemos (or expand=all).",
            "readOnly": true,
            "x-queryable": false
          },
          "creditMemoApplications": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "ApplicationId": {
                  "type": "number",
                  "description": "Primary key of the credit memo application.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ApplicationAmount": {
                  "type": "number",
                  "description": "Amount of the credit memo applied, in EnteredCurrency.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ApplicationDate": {
                  "type": "string",
                  "format": "date",
                  "description": "yyyy-MM-dd date the credit memo was applied.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ApplicationStatus": {
                  "type": "string",
                  "description": "Whether the application is in force or has been reversed. The VALUE VOCABULARY for this attribute is not confirmed against Oracle — its page gives the attribute a length but no allowed-value list, and the sibling standardReceiptApplications child uses a different pair — so branch on the value you observe on your own instance rather than on a list published here. Recorded as unverified in the conformance ledger.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "CreditMemoId": {
                  "type": "number",
                  "description": "The credit memo whose value was applied. Read it on the creditMemos child.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "CreditMemoNumber": {
                  "type": "string",
                  "description": "Transaction number of that credit memo.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "CreditMemoStatus": {
                  "type": "string",
                  "description": "Open or Closed — whether the credit memo still carries a balance. Derived from its open balance rather than stored.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "EnteredCurrency": {
                  "type": "string",
                  "description": "ISO 4217 currency of the credit memo.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ReferenceTransactionId": {
                  "type": "number",
                  "description": "CustomerTransactionId of the transaction the credit memo was applied to.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionNumber": {
                  "type": "string",
                  "description": "Transaction number of that transaction.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionStatus": {
                  "type": "string",
                  "description": "Open or Closed — whether the credited transaction still carries a balance. Derived, like CreditMemoStatus, but from a DIFFERENT transaction.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceInstallmentId": {
                  "type": "number",
                  "description": "The installment the application settled. Null once a reversal has detached it.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit timestamp of the most recent change, Oracle wire format. Maintained by the database and not settable. Use it as an incremental-sync watermark for credit memo applications - before migration 0084 this table had no such column and there was no watermark at this grain.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "Applications of the account's credit memos against transactions. Returned with expand=creditMemoApplications (or expand=all).",
            "readOnly": true,
            "x-queryable": false
          },
          "transactionsPaidByOtherCustomers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "ApplicationId": {
                  "type": "number",
                  "description": "Primary key of the application.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "StandardReceiptId": {
                  "type": "number",
                  "description": "The receipt that paid.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReceiptNumber": {
                  "type": "string",
                  "description": "That receipt's number.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReceiptMethod": {
                  "type": "string",
                  "description": "The receipt method used. The one attribute this child publishes that the sibling standardReceiptApplications child does not.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionId": {
                  "type": "number",
                  "description": "The transaction that was paid.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionNumber": {
                  "type": "string",
                  "description": "That transaction's number.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionStatus": {
                  "type": "string",
                  "description": "Open or Closed - the status of the transaction the receipt was applied against, derived from its live open balance rather than stored. Not the invoice's completion status.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceInstallmentId": {
                  "type": "number",
                  "description": "The installment settled.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ApplicationAmount": {
                  "type": "number",
                  "description": "How much of the receipt landed here.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ApplicationDate": {
                  "type": "string",
                  "format": "date",
                  "description": "When it was applied.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "AccountingDate": {
                  "type": "string",
                  "format": "date",
                  "description": "The accounting date of the application.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ApplicationStatus": {
                  "type": "string",
                  "description": "The application's status.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "EnteredCurrency": {
                  "type": "string",
                  "description": "The receipt's currency.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreatedBy": {
                  "type": "string",
                  "description": "Who created the application.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreationDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "When it was created. Oracle wire format.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdatedBy": {
                  "type": "string",
                  "description": "Who last updated it.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "When it was last updated. Oracle wire format.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "This account's transactions that someone else paid. Returned with expand=transactionsPaidByOtherCustomers (or expand=all).",
            "readOnly": true,
            "x-queryable": false
          },
          "transactionAdjustments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "AdjustmentId": {
                  "type": "number",
                  "description": "Primary key of the adjustment.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "AdjustmentNumber": {
                  "type": "string",
                  "description": "The number assigned to the adjustment. Oracle publishes a maximum length of 20.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "AdjustmentAmount": {
                  "type": "number",
                  "description": "The amount adjusted.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "AdjustmentType": {
                  "type": "string",
                  "description": "What part of the transaction is adjusted. Oracle's values: Charges, Freight, Invoice (transaction header), Line, Tax.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "AdjustmentReason": {
                  "type": "string",
                  "description": "The reason code assigned to the adjustment. Oracle publishes no fixed list — reason codes are customer-defined lookups.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ReferenceTransactionId": {
                  "type": "number",
                  "description": "The adjusted transaction.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionNumber": {
                  "type": "string",
                  "description": "That transaction's number.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionStatus": {
                  "type": "string",
                  "description": "Open or Closed — the status of the transaction the adjustment is made against, derived from its live open balance rather than stored.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceInstallmentId": {
                  "type": "number",
                  "description": "The adjusted installment. Null for a header-level adjustment.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "BillToSiteNumber": {
                  "type": "string",
                  "description": "The name of the customer bill-to site.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "AccountingDate": {
                  "type": "string",
                  "format": "date",
                  "description": "The accounting date of the adjustment.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ApplicationDate": {
                  "type": "string",
                  "format": "date",
                  "description": "The application date of the adjustment.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "EnteredCurrency": {
                  "type": "string",
                  "description": "The adjustment's currency code.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreatedBy": {
                  "type": "string",
                  "description": "Who created the adjustment.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreationDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "When it was created. Oracle wire format.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdatedBy": {
                  "type": "string",
                  "description": "Who last updated it.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "When it was last updated. Oracle wire format.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "Adjustments made against this account's transactions. Returned with expand=transactionAdjustments (or expand=all).",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "ReceivablesCustomerAccountActivityCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceivablesCustomerAccountActivity"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "TransactionAdjustment": {
        "type": "object",
        "description": "One adjustment made against a transaction belonging to this account.",
        "properties": {
          "AdjustmentId": {
            "type": "number",
            "description": "Primary key of the adjustment.",
            "readOnly": true,
            "x-queryable": true
          },
          "AdjustmentNumber": {
            "type": "string",
            "description": "The number assigned to the adjustment. Oracle publishes a maximum length of 20.",
            "readOnly": true,
            "x-queryable": true
          },
          "AdjustmentAmount": {
            "type": "number",
            "description": "The amount adjusted.",
            "readOnly": true,
            "x-queryable": false
          },
          "AdjustmentType": {
            "type": "string",
            "description": "What part of the transaction is adjusted. Oracle's values: Charges, Freight, Invoice (transaction header), Line, Tax.",
            "readOnly": true,
            "x-queryable": false
          },
          "AdjustmentReason": {
            "type": "string",
            "description": "The reason code assigned to the adjustment. Oracle publishes no fixed list — reason codes are customer-defined lookups.",
            "readOnly": true,
            "x-queryable": false
          },
          "ReferenceTransactionId": {
            "type": "number",
            "description": "The adjusted transaction.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReferenceTransactionNumber": {
            "type": "string",
            "description": "That transaction's number.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReferenceTransactionStatus": {
            "type": "string",
            "description": "Open or Closed — the status of the transaction the adjustment is made against, derived from its live open balance rather than stored.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReferenceInstallmentId": {
            "type": "number",
            "description": "The adjusted installment. Null for a header-level adjustment.",
            "readOnly": true,
            "x-queryable": true
          },
          "BillToSiteNumber": {
            "type": "string",
            "description": "The name of the customer bill-to site.",
            "readOnly": true,
            "x-queryable": false
          },
          "AccountingDate": {
            "type": "string",
            "format": "date",
            "description": "The accounting date of the adjustment.",
            "readOnly": true,
            "x-queryable": false
          },
          "ApplicationDate": {
            "type": "string",
            "format": "date",
            "description": "The application date of the adjustment.",
            "readOnly": true,
            "x-queryable": false
          },
          "EnteredCurrency": {
            "type": "string",
            "description": "The adjustment's currency code.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreatedBy": {
            "type": "string",
            "description": "Who created the adjustment.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreationDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "When it was created. Oracle wire format.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdatedBy": {
            "type": "string",
            "description": "Who last updated it.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "When it was last updated. Oracle wire format.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "TransactionAdjustmentCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionAdjustment"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "TransactionPaidByOtherCustomer": {
        "type": "object",
        "description": "One receipt application whose receipt belongs to a different customer from the transaction it settles.",
        "properties": {
          "ApplicationId": {
            "type": "number",
            "description": "Primary key of the application.",
            "readOnly": true,
            "x-queryable": true
          },
          "StandardReceiptId": {
            "type": "number",
            "description": "The receipt that paid.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReceiptNumber": {
            "type": "string",
            "description": "That receipt's number.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReceiptMethod": {
            "type": "string",
            "description": "The receipt method used. The one attribute this child publishes that the sibling standardReceiptApplications child does not.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReferenceTransactionId": {
            "type": "number",
            "description": "The transaction that was paid.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReferenceTransactionNumber": {
            "type": "string",
            "description": "That transaction's number.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReferenceTransactionStatus": {
            "type": "string",
            "description": "Open or Closed - the status of the transaction the receipt was applied against, derived from its live open balance rather than stored. Not the invoice's completion status.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReferenceInstallmentId": {
            "type": "number",
            "description": "The installment settled.",
            "readOnly": true,
            "x-queryable": true
          },
          "ApplicationAmount": {
            "type": "number",
            "description": "How much of the receipt landed here.",
            "readOnly": true,
            "x-queryable": false
          },
          "ApplicationDate": {
            "type": "string",
            "format": "date",
            "description": "When it was applied.",
            "readOnly": true,
            "x-queryable": false
          },
          "AccountingDate": {
            "type": "string",
            "format": "date",
            "description": "The accounting date of the application.",
            "readOnly": true,
            "x-queryable": false
          },
          "ApplicationStatus": {
            "type": "string",
            "description": "The application's status.",
            "readOnly": true,
            "x-queryable": true
          },
          "EnteredCurrency": {
            "type": "string",
            "description": "The receipt's currency.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreatedBy": {
            "type": "string",
            "description": "Who created the application.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreationDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "When it was created. Oracle wire format.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdatedBy": {
            "type": "string",
            "description": "Who last updated it.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "When it was last updated. Oracle wire format.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "TransactionPaidByOtherCustomerCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionPaidByOtherCustomer"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "CreditMemoApplication": {
        "type": "object",
        "description": "One application of a credit memo against a receivables transaction.",
        "properties": {
          "ApplicationId": {
            "type": "number",
            "description": "Primary key of the credit memo application.",
            "readOnly": true,
            "x-queryable": true
          },
          "ApplicationAmount": {
            "type": "number",
            "description": "Amount of the credit memo applied, in EnteredCurrency.",
            "readOnly": true,
            "x-queryable": false
          },
          "ApplicationDate": {
            "type": "string",
            "format": "date",
            "description": "yyyy-MM-dd date the credit memo was applied.",
            "readOnly": true,
            "x-queryable": false
          },
          "ApplicationStatus": {
            "type": "string",
            "description": "Whether the application is in force or has been reversed. The VALUE VOCABULARY for this attribute is not confirmed against Oracle — its page gives the attribute a length but no allowed-value list, and the sibling standardReceiptApplications child uses a different pair — so branch on the value you observe on your own instance rather than on a list published here. Recorded as unverified in the conformance ledger.",
            "readOnly": true,
            "x-queryable": true
          },
          "CreditMemoId": {
            "type": "number",
            "description": "The credit memo whose value was applied. Read it on the creditMemos child.",
            "readOnly": true,
            "x-queryable": true
          },
          "CreditMemoNumber": {
            "type": "string",
            "description": "Transaction number of that credit memo.",
            "readOnly": true,
            "x-queryable": true
          },
          "CreditMemoStatus": {
            "type": "string",
            "description": "Open or Closed — whether the credit memo still carries a balance. Derived from its open balance rather than stored.",
            "readOnly": true,
            "x-queryable": true
          },
          "EnteredCurrency": {
            "type": "string",
            "description": "ISO 4217 currency of the credit memo.",
            "readOnly": true,
            "x-queryable": false
          },
          "ReferenceTransactionId": {
            "type": "number",
            "description": "CustomerTransactionId of the transaction the credit memo was applied to.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReferenceTransactionNumber": {
            "type": "string",
            "description": "Transaction number of that transaction.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReferenceTransactionStatus": {
            "type": "string",
            "description": "Open or Closed — whether the credited transaction still carries a balance. Derived, like CreditMemoStatus, but from a DIFFERENT transaction.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReferenceInstallmentId": {
            "type": "number",
            "description": "The installment the application settled. Null once a reversal has detached it.",
            "readOnly": true,
            "x-queryable": true
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit timestamp of the most recent change, Oracle wire format. Maintained by the database and not settable. Use it as an incremental-sync watermark for credit memo applications - before migration 0084 this table had no such column and there was no watermark at this grain.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "CreditMemoApplicationCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreditMemoApplication"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "AccountCreditMemo": {
        "type": "object",
        "description": "One credit memo raised against a customer account or bill-to site.",
        "properties": {
          "CreditMemoId": {
            "type": "number",
            "description": "Primary key of the credit memo. A credit memo is a transaction, so this is its CustomerTransactionId.",
            "readOnly": true,
            "x-queryable": true
          },
          "CreditMemoNumber": {
            "type": "string",
            "description": "Transaction number of the credit memo.",
            "readOnly": true,
            "x-queryable": true
          },
          "CreditMemoDate": {
            "type": "string",
            "format": "date",
            "description": "yyyy-MM-dd date the credit memo bears.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreditMemoCurrency": {
            "type": "string",
            "description": "ISO 4217 currency of the credit memo.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreditMemoStatus": {
            "type": "string",
            "description": "Open or Closed — whether the credit memo still carries a balance. Derived from the open balance rather than stored, so it can never disagree with TotalBalanceAmount.",
            "readOnly": true,
            "x-queryable": true
          },
          "TotalOriginalAmount": {
            "type": "number",
            "description": "Original amount of the credit memo, in CreditMemoCurrency.",
            "readOnly": true,
            "x-queryable": false
          },
          "TotalBalanceAmount": {
            "type": "number",
            "description": "Amount still remaining on the credit memo.",
            "readOnly": true,
            "x-queryable": false
          },
          "TransactionType": {
            "type": "string",
            "maxLength": 20,
            "description": "Always Credit Memo on this child.",
            "readOnly": true,
            "x-queryable": true
          },
          "InstallmentId": {
            "type": "number",
            "description": "The credit memo installment. Oracle publishes one; where a credit memo carries several schedules this reports the lowest installment number.",
            "readOnly": true,
            "x-queryable": true
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit timestamp of the most recent change.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "AccountCreditMemoCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountCreditMemo"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "TransactionPaymentSchedule": {
        "type": "object",
        "description": "One installment of one transaction belonging to a customer account or bill-to site.",
        "properties": {
          "InstallmentId": {
            "type": "number",
            "description": "Primary key of the installment (payment schedule).",
            "readOnly": true,
            "x-queryable": true
          },
          "InstallmentNumber": {
            "type": "number",
            "description": "Sequence of this installment within its transaction.",
            "readOnly": true,
            "x-queryable": false
          },
          "InstallmentStatus": {
            "type": "string",
            "description": "Open or Closed. Note the receivablesInvoiceInstallments child publishes the same underlying state as OP or CL — each resource uses Oracle's vocabulary for itself, so do not carry a value across.",
            "readOnly": true,
            "x-queryable": true
          },
          "PaymentScheduleDueDate": {
            "type": "string",
            "format": "date",
            "description": "yyyy-MM-dd date this installment falls due.",
            "readOnly": true,
            "x-queryable": false
          },
          "TotalOriginalAmount": {
            "type": "number",
            "description": "Original amount of the installment, in EnteredCurrency.",
            "readOnly": true,
            "x-queryable": false
          },
          "TotalBalanceAmount": {
            "type": "number",
            "description": "Amount still outstanding on the installment.",
            "readOnly": true,
            "x-queryable": false
          },
          "TransactionId": {
            "type": "number",
            "description": "CustomerTransactionId of the transaction this installment belongs to.",
            "readOnly": true,
            "x-queryable": true
          },
          "TransactionNumber": {
            "type": "string",
            "description": "Transaction number of that transaction.",
            "readOnly": true,
            "x-queryable": true
          },
          "TransactionDate": {
            "type": "string",
            "format": "date",
            "description": "yyyy-MM-dd date the transaction bears.",
            "readOnly": true,
            "x-queryable": false
          },
          "TransactionType": {
            "type": "string",
            "maxLength": 20,
            "description": "Transaction type — Invoice, Credit Memo, and so on.",
            "readOnly": true,
            "x-queryable": true
          },
          "EnteredCurrency": {
            "type": "string",
            "description": "ISO 4217 currency the transaction was entered in.",
            "readOnly": true,
            "x-queryable": false
          },
          "TransactionSourceName": {
            "type": "string",
            "description": "Batch source the transaction was created under. Oracle's name for it on THIS child; the receivablesInvoices resource calls the same value TransactionSource. Not filterable and not sortable here - it is resolved from the transaction, not stored on the schedule row.",
            "readOnly": true,
            "x-queryable": false
          },
          "PaymentDaysLate": {
            "type": "number",
            "description": "Days this installment is past its due date, floored at zero, and zero for a closed installment. Computed on read from the same rule the receivablesInvoiceInstallments child uses, so the two agree. Not usable as a sort key for that reason.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit timestamp of the most recent change.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "TransactionPaymentScheduleCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionPaymentSchedule"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "AccountStandardReceipt": {
        "type": "object",
        "description": "One receipt belonging to a customer account or bill-to site.",
        "properties": {
          "StandardReceiptId": {
            "type": "number",
            "description": "Primary key of the receipt. The full record is at /standardReceipts/{StandardReceiptId}.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReceiptNumber": {
            "type": "string",
            "description": "The receipt number as supplied when the receipt was created.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReceiptDate": {
            "type": "string",
            "format": "date",
            "description": "yyyy-MM-dd date of the receipt.",
            "readOnly": true,
            "x-queryable": false
          },
          "ReceiptMethod": {
            "type": "string",
            "description": "Name of the receipt method the payment arrived by.",
            "readOnly": true,
            "x-queryable": true
          },
          "Amount": {
            "type": "number",
            "description": "Total amount received, in Currency.",
            "readOnly": true,
            "x-queryable": false
          },
          "Currency": {
            "type": "string",
            "description": "ISO 4217 currency of the receipt.",
            "readOnly": true,
            "x-queryable": false
          },
          "State": {
            "type": "string",
            "description": "APPLIED, UNAPPLIED, UNIDENTIFIED, REVERSE PAYMENT, INSUFFICIENT FUNDS or STOP PAYMENT. This child publishes State and NOT Status, unlike the top-level standardReceipts resource.",
            "readOnly": true,
            "x-queryable": false
          },
          "UnappliedAmount": {
            "type": "number",
            "description": "Cash on this receipt not yet applied to any transaction.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit timestamp of the most recent change.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "AccountStandardReceiptCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountStandardReceipt"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "StandardReceiptApplication": {
        "type": "object",
        "description": "One application of receipt cash against a receivables transaction.",
        "properties": {
          "ApplicationId": {
            "type": "number",
            "description": "Primary key of the application.",
            "readOnly": true,
            "x-queryable": true
          },
          "StandardReceiptId": {
            "type": "number",
            "description": "The receipt whose cash was applied. Read it at /standardReceipts/{StandardReceiptId}.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReceiptNumber": {
            "type": "string",
            "description": "Receipt number of that receipt.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReferenceTransactionId": {
            "type": "number",
            "description": "CustomerTransactionId of the invoice the cash was applied to.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReferenceTransactionNumber": {
            "type": "string",
            "description": "TransactionNumber of that invoice.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReferenceInstallmentId": {
            "type": "number",
            "description": "InstallmentId the application settled. Null once a reversal has detached it.",
            "readOnly": true,
            "x-queryable": true
          },
          "ApplicationAmount": {
            "type": "number",
            "description": "Amount applied, in EnteredCurrency.",
            "readOnly": true,
            "x-queryable": false
          },
          "EnteredCurrency": {
            "type": "string",
            "description": "ISO 4217 currency of the receipt this application came from.",
            "readOnly": true,
            "x-queryable": false
          },
          "ApplicationDate": {
            "type": "string",
            "format": "date",
            "description": "yyyy-MM-dd date the application was made.",
            "readOnly": true,
            "x-queryable": false
          },
          "AccountingDate": {
            "type": "string",
            "format": "date",
            "description": "yyyy-MM-dd accounting date of the application.",
            "readOnly": true,
            "x-queryable": false
          },
          "ApplicationStatus": {
            "type": "string",
            "description": "APP for an application in force, REV once reversed. Only APP rows reduce an invoice balance; a REV row is history.",
            "readOnly": true,
            "x-queryable": true
          },
          "ReferenceTransactionStatus": {
            "type": "string",
            "description": "Open or Closed — whether the invoice still carries a balance.",
            "readOnly": true,
            "x-queryable": true
          },
          "CreatedBy": {
            "type": "string",
            "description": "Audit user that created the row.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreationDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit creation timestamp.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdatedBy": {
            "type": "string",
            "description": "Audit user of the most recent change.",
            "readOnly": true,
            "x-queryable": false
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit timestamp of the most recent change.",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "StandardReceiptApplicationCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StandardReceiptApplication"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "ReceivablesCustomerAccountSiteActivity": {
        "type": "object",
        "properties": {
          "AccountId": {
            "type": "number",
            "description": "Customer account identifier. The key of the item path on this resource, for BOTH the account and the site variant.",
            "readOnly": true,
            "x-queryable": true
          },
          "AccountNumber": {
            "type": "string",
            "description": "Customer account number, the value you pass as CustomerAccountNumber on a receipt.",
            "readOnly": true,
            "x-queryable": true
          },
          "CustomerId": {
            "type": "number",
            "description": "Trading Community party id of the customer.",
            "readOnly": true,
            "x-queryable": true
          },
          "CustomerName": {
            "type": "string",
            "description": "Customer name.",
            "readOnly": true,
            "x-queryable": true
          },
          "BillToSiteUseId": {
            "type": "number",
            "description": "The bill-to site use this row aggregates. Present only on the site-grained resource.",
            "readOnly": true,
            "x-queryable": false
          },
          "TaxpayerIdentificationNumber": {
            "type": "string",
            "description": "Documented by Oracle; not populated in this simulator, so always null.",
            "readOnly": true,
            "x-queryable": true
          },
          "TaxRegistrationNumber": {
            "type": "string",
            "description": "Documented by Oracle; not populated in this simulator, so always null.",
            "readOnly": true,
            "x-queryable": true
          },
          "TotalOpenReceivablesForSite": {
            "type": "number",
            "description": "Total Transaction Due Amount LESS Pending Application Amount for the bill-to site. Expressed in the LEDGER currency (USD here), NOT the invoice currency — this resource carries no currency attribute because Oracle defines none. Can be NEGATIVE when a customer has unapplied cash exceeding what they owe. Voided transactions are excluded.",
            "readOnly": true,
            "x-queryable": false
          },
          "TotalTransactionsDueForSite": {
            "type": "number",
            "description": "Total amount due across the site's open transactions, in the LEDGER currency. This is an AMOUNT, not a past-due filter — it is not restricted to overdue items.",
            "readOnly": true,
            "x-queryable": false
          },
          "CreatedBy": {
            "type": "string",
            "description": "Audit user that created the account.",
            "readOnly": true,
            "x-queryable": true
          },
          "CreationDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit creation timestamp.",
            "readOnly": true,
            "x-queryable": true
          },
          "LastUpdatedBy": {
            "type": "string",
            "description": "Audit user of the most recent change.",
            "readOnly": true,
            "x-queryable": true
          },
          "LastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
            "example": "2026-06-25T12:00:00.000+0000",
            "description": "Audit timestamp of the most recent change.",
            "readOnly": true,
            "x-queryable": true
          },
          "standardReceipts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "StandardReceiptId": {
                  "type": "number",
                  "description": "Primary key of the receipt. The full record is at /standardReceipts/{StandardReceiptId}.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReceiptNumber": {
                  "type": "string",
                  "description": "The receipt number as supplied when the receipt was created.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReceiptDate": {
                  "type": "string",
                  "format": "date",
                  "description": "yyyy-MM-dd date of the receipt.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ReceiptMethod": {
                  "type": "string",
                  "description": "Name of the receipt method the payment arrived by.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "Amount": {
                  "type": "number",
                  "description": "Total amount received, in Currency.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "Currency": {
                  "type": "string",
                  "description": "ISO 4217 currency of the receipt.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "State": {
                  "type": "string",
                  "description": "APPLIED, UNAPPLIED, UNIDENTIFIED, REVERSE PAYMENT, INSUFFICIENT FUNDS or STOP PAYMENT. This child publishes State and NOT Status, unlike the top-level standardReceipts resource.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "UnappliedAmount": {
                  "type": "number",
                  "description": "Cash on this receipt not yet applied to any transaction.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit timestamp of the most recent change.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "The account's receipts. Returned when requested with expand=standardReceipts (or expand=all), and identical to reading the child collection directly.",
            "readOnly": true,
            "x-queryable": false
          },
          "standardReceiptApplications": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "ApplicationId": {
                  "type": "number",
                  "description": "Primary key of the application.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "StandardReceiptId": {
                  "type": "number",
                  "description": "The receipt whose cash was applied. Read it at /standardReceipts/{StandardReceiptId}.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReceiptNumber": {
                  "type": "string",
                  "description": "Receipt number of that receipt.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionId": {
                  "type": "number",
                  "description": "CustomerTransactionId of the invoice the cash was applied to.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionNumber": {
                  "type": "string",
                  "description": "TransactionNumber of that invoice.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceInstallmentId": {
                  "type": "number",
                  "description": "InstallmentId the application settled. Null once a reversal has detached it.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ApplicationAmount": {
                  "type": "number",
                  "description": "Amount applied, in EnteredCurrency.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "EnteredCurrency": {
                  "type": "string",
                  "description": "ISO 4217 currency of the receipt this application came from.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ApplicationDate": {
                  "type": "string",
                  "format": "date",
                  "description": "yyyy-MM-dd date the application was made.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "AccountingDate": {
                  "type": "string",
                  "format": "date",
                  "description": "yyyy-MM-dd accounting date of the application.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ApplicationStatus": {
                  "type": "string",
                  "description": "APP for an application in force, REV once reversed. Only APP rows reduce an invoice balance; a REV row is history.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionStatus": {
                  "type": "string",
                  "description": "Open or Closed — whether the invoice still carries a balance.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "CreatedBy": {
                  "type": "string",
                  "description": "Audit user that created the row.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreationDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit creation timestamp.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdatedBy": {
                  "type": "string",
                  "description": "Audit user of the most recent change.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit timestamp of the most recent change.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "Receipt applications against the account's transactions. Returned with expand=standardReceiptApplications (or expand=all).",
            "readOnly": true,
            "x-queryable": false
          },
          "transactionPaymentSchedules": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "InstallmentId": {
                  "type": "number",
                  "description": "Primary key of the installment (payment schedule).",
                  "readOnly": true,
                  "x-queryable": true
                },
                "InstallmentNumber": {
                  "type": "number",
                  "description": "Sequence of this installment within its transaction.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "InstallmentStatus": {
                  "type": "string",
                  "description": "Open or Closed. Note the receivablesInvoiceInstallments child publishes the same underlying state as OP or CL — each resource uses Oracle's vocabulary for itself, so do not carry a value across.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "PaymentScheduleDueDate": {
                  "type": "string",
                  "format": "date",
                  "description": "yyyy-MM-dd date this installment falls due.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "TotalOriginalAmount": {
                  "type": "number",
                  "description": "Original amount of the installment, in EnteredCurrency.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "TotalBalanceAmount": {
                  "type": "number",
                  "description": "Amount still outstanding on the installment.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "TransactionId": {
                  "type": "number",
                  "description": "CustomerTransactionId of the transaction this installment belongs to.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "TransactionNumber": {
                  "type": "string",
                  "description": "Transaction number of that transaction.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "TransactionDate": {
                  "type": "string",
                  "format": "date",
                  "description": "yyyy-MM-dd date the transaction bears.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "TransactionType": {
                  "type": "string",
                  "maxLength": 20,
                  "description": "Transaction type — Invoice, Credit Memo, and so on.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "EnteredCurrency": {
                  "type": "string",
                  "description": "ISO 4217 currency the transaction was entered in.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "TransactionSourceName": {
                  "type": "string",
                  "description": "Batch source the transaction was created under. Oracle's name for it on THIS child; the receivablesInvoices resource calls the same value TransactionSource. Not filterable and not sortable here - it is resolved from the transaction, not stored on the schedule row.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "PaymentDaysLate": {
                  "type": "number",
                  "description": "Days this installment is past its due date, floored at zero, and zero for a closed installment. Computed on read from the same rule the receivablesInvoiceInstallments child uses, so the two agree. Not usable as a sort key for that reason.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit timestamp of the most recent change.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "Installment-level payment schedules for the account's transactions. Returned with expand=transactionPaymentSchedules (or expand=all).",
            "readOnly": true,
            "x-queryable": false
          },
          "creditMemos": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "CreditMemoId": {
                  "type": "number",
                  "description": "Primary key of the credit memo. A credit memo is a transaction, so this is its CustomerTransactionId.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "CreditMemoNumber": {
                  "type": "string",
                  "description": "Transaction number of the credit memo.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "CreditMemoDate": {
                  "type": "string",
                  "format": "date",
                  "description": "yyyy-MM-dd date the credit memo bears.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreditMemoCurrency": {
                  "type": "string",
                  "description": "ISO 4217 currency of the credit memo.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreditMemoStatus": {
                  "type": "string",
                  "description": "Open or Closed — whether the credit memo still carries a balance. Derived from the open balance rather than stored, so it can never disagree with TotalBalanceAmount.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "TotalOriginalAmount": {
                  "type": "number",
                  "description": "Original amount of the credit memo, in CreditMemoCurrency.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "TotalBalanceAmount": {
                  "type": "number",
                  "description": "Amount still remaining on the credit memo.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "TransactionType": {
                  "type": "string",
                  "maxLength": 20,
                  "description": "Always Credit Memo on this child.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "InstallmentId": {
                  "type": "number",
                  "description": "The credit memo installment. Oracle publishes one; where a credit memo carries several schedules this reports the lowest installment number.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit timestamp of the most recent change.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "Credit memos belonging to the account. Returned with expand=creditMemos (or expand=all).",
            "readOnly": true,
            "x-queryable": false
          },
          "creditMemoApplications": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "ApplicationId": {
                  "type": "number",
                  "description": "Primary key of the credit memo application.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ApplicationAmount": {
                  "type": "number",
                  "description": "Amount of the credit memo applied, in EnteredCurrency.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ApplicationDate": {
                  "type": "string",
                  "format": "date",
                  "description": "yyyy-MM-dd date the credit memo was applied.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ApplicationStatus": {
                  "type": "string",
                  "description": "Whether the application is in force or has been reversed. The VALUE VOCABULARY for this attribute is not confirmed against Oracle — its page gives the attribute a length but no allowed-value list, and the sibling standardReceiptApplications child uses a different pair — so branch on the value you observe on your own instance rather than on a list published here. Recorded as unverified in the conformance ledger.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "CreditMemoId": {
                  "type": "number",
                  "description": "The credit memo whose value was applied. Read it on the creditMemos child.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "CreditMemoNumber": {
                  "type": "string",
                  "description": "Transaction number of that credit memo.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "CreditMemoStatus": {
                  "type": "string",
                  "description": "Open or Closed — whether the credit memo still carries a balance. Derived from its open balance rather than stored.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "EnteredCurrency": {
                  "type": "string",
                  "description": "ISO 4217 currency of the credit memo.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ReferenceTransactionId": {
                  "type": "number",
                  "description": "CustomerTransactionId of the transaction the credit memo was applied to.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionNumber": {
                  "type": "string",
                  "description": "Transaction number of that transaction.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionStatus": {
                  "type": "string",
                  "description": "Open or Closed — whether the credited transaction still carries a balance. Derived, like CreditMemoStatus, but from a DIFFERENT transaction.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceInstallmentId": {
                  "type": "number",
                  "description": "The installment the application settled. Null once a reversal has detached it.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "Audit timestamp of the most recent change, Oracle wire format. Maintained by the database and not settable. Use it as an incremental-sync watermark for credit memo applications - before migration 0084 this table had no such column and there was no watermark at this grain.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "Applications of the account's credit memos against transactions. Returned with expand=creditMemoApplications (or expand=all).",
            "readOnly": true,
            "x-queryable": false
          },
          "transactionsPaidByOtherCustomers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "ApplicationId": {
                  "type": "number",
                  "description": "Primary key of the application.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "StandardReceiptId": {
                  "type": "number",
                  "description": "The receipt that paid.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReceiptNumber": {
                  "type": "string",
                  "description": "That receipt's number.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReceiptMethod": {
                  "type": "string",
                  "description": "The receipt method used. The one attribute this child publishes that the sibling standardReceiptApplications child does not.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionId": {
                  "type": "number",
                  "description": "The transaction that was paid.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionNumber": {
                  "type": "string",
                  "description": "That transaction's number.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionStatus": {
                  "type": "string",
                  "description": "Open or Closed - the status of the transaction the receipt was applied against, derived from its live open balance rather than stored. Not the invoice's completion status.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceInstallmentId": {
                  "type": "number",
                  "description": "The installment settled.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ApplicationAmount": {
                  "type": "number",
                  "description": "How much of the receipt landed here.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ApplicationDate": {
                  "type": "string",
                  "format": "date",
                  "description": "When it was applied.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "AccountingDate": {
                  "type": "string",
                  "format": "date",
                  "description": "The accounting date of the application.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ApplicationStatus": {
                  "type": "string",
                  "description": "The application's status.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "EnteredCurrency": {
                  "type": "string",
                  "description": "The receipt's currency.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreatedBy": {
                  "type": "string",
                  "description": "Who created the application.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreationDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "When it was created. Oracle wire format.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdatedBy": {
                  "type": "string",
                  "description": "Who last updated it.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "When it was last updated. Oracle wire format.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "This account's transactions that someone else paid. Returned with expand=transactionsPaidByOtherCustomers (or expand=all).",
            "readOnly": true,
            "x-queryable": false
          },
          "transactionAdjustments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "AdjustmentId": {
                  "type": "number",
                  "description": "Primary key of the adjustment.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "AdjustmentNumber": {
                  "type": "string",
                  "description": "The number assigned to the adjustment. Oracle publishes a maximum length of 20.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "AdjustmentAmount": {
                  "type": "number",
                  "description": "The amount adjusted.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "AdjustmentType": {
                  "type": "string",
                  "description": "What part of the transaction is adjusted. Oracle's values: Charges, Freight, Invoice (transaction header), Line, Tax.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "AdjustmentReason": {
                  "type": "string",
                  "description": "The reason code assigned to the adjustment. Oracle publishes no fixed list — reason codes are customer-defined lookups.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ReferenceTransactionId": {
                  "type": "number",
                  "description": "The adjusted transaction.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionNumber": {
                  "type": "string",
                  "description": "That transaction's number.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceTransactionStatus": {
                  "type": "string",
                  "description": "Open or Closed — the status of the transaction the adjustment is made against, derived from its live open balance rather than stored.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "ReferenceInstallmentId": {
                  "type": "number",
                  "description": "The adjusted installment. Null for a header-level adjustment.",
                  "readOnly": true,
                  "x-queryable": true
                },
                "BillToSiteNumber": {
                  "type": "string",
                  "description": "The name of the customer bill-to site.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "AccountingDate": {
                  "type": "string",
                  "format": "date",
                  "description": "The accounting date of the adjustment.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "ApplicationDate": {
                  "type": "string",
                  "format": "date",
                  "description": "The application date of the adjustment.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "EnteredCurrency": {
                  "type": "string",
                  "description": "The adjustment's currency code.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreatedBy": {
                  "type": "string",
                  "description": "Who created the adjustment.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "CreationDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "When it was created. Oracle wire format.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdatedBy": {
                  "type": "string",
                  "description": "Who last updated it.",
                  "readOnly": true,
                  "x-queryable": false
                },
                "LastUpdateDate": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]\\d{4}$",
                  "example": "2026-06-25T12:00:00.000+0000",
                  "description": "When it was last updated. Oracle wire format.",
                  "readOnly": true,
                  "x-queryable": false
                }
              }
            },
            "description": "Adjustments made against this account's transactions. Returned with expand=transactionAdjustments (or expand=all).",
            "readOnly": true,
            "x-queryable": false
          }
        }
      },
      "ReceivablesCustomerAccountSiteActivityCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceivablesCustomerAccountSiteActivity"
            }
          },
          "count": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "totalResults": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HateoasLink"
            }
          }
        },
        "required": [
          "items",
          "count",
          "hasMore",
          "limit",
          "offset"
        ]
      },
      "OAuthError": {
        "type": "object",
        "required": [
          "error",
          "error_description"
        ],
        "properties": {
          "error": {
            "type": "string",
            "enum": [
              "invalid_request",
              "invalid_client",
              "invalid_scope",
              "unsupported_grant_type"
            ]
          },
          "error_description": {
            "type": "string"
          }
        }
      }
    }
  }
}