GET /api/v1/internal/fulfilment/bookings/{bookingId}/lines/{lineId}/finance
Review supplier report and invoice closeout
Internal staff surface. Client data is restricted to explicit server-owned customer assignments; inaccessible resources return 404. Product/channel entitlements also apply.
Requires a verified Supabase human web session and active, revocable database-owned staff membership. Customer operator permissions, request headers and delegated agents cannot grant staff access. The session endpoint returns access:false to nonstaff without staff or customer identifiers.
Request
GET /api/v1/internal/fulfilment/bookings/{bookingId}/lines/{lineId}/financeUse the configured API origin. Private requests require a verified Bearer credential; an agent mutation can additionally require exact approval headers. Authentication guide →
| Parameter | Location | Required | Description |
|---|---|---|---|
bookingId | path | Yes | |
lineId | path | Yes |
Parameter schemas
[
{
"name": "bookingId",
"in": "path",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
},
{
"name": "lineId",
"in": "path",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
}
]Responses
Reference schemas resolve through the downloadable OpenAPI components. The specification marks unmodeled success payloads; an unrestricted payload is not a promise that arbitrary fields exist.
400Invalid request or unsupported fields
{
"description": "Invalid request or unsupported fields",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}401Missing or invalid authentication
{
"description": "Missing or invalid authentication",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}403Permission or product scope refused
{
"description": "Permission or product scope refused",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}404Route or tenant-scoped resource not found
{
"description": "Route or tenant-scoped resource not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}409State, revision, approval, funding or idempotency conflict
{
"description": "State, revision, approval, funding or idempotency conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}422Supplier configuration, capability or upstream refusal
{
"description": "Supplier configuration, capability or upstream refusal",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}429Rate limit reached; wait before retrying
{
"description": "Rate limit reached; wait before retrying",
"headers": {
"x-ratelimit-limit": {
"description": "Maximum requests permitted in the current rate-limit window.",
"schema": {
"type": "integer"
}
},
"x-ratelimit-remaining": {
"description": "Requests remaining in the current window.",
"schema": {
"type": "integer"
}
},
"x-ratelimit-reset": {
"description": "Seconds until the current rate-limit window resets.",
"schema": {
"type": "integer"
}
},
"retry-after": {
"description": "Minimum seconds to wait before retrying.",
"schema": {
"type": "integer"
}
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}500Internal error; inspect state before retrying a mutation
{
"description": "Internal error; inspect state before retrying a mutation",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}503Dependency or authentication verifier unavailable
{
"description": "Dependency or authentication verifier unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}2XXSuccessful response.
{
"description": "Successful response.",
"headers": {
"x-ratelimit-limit": {
"description": "Maximum requests permitted in the current rate-limit window.",
"schema": {
"type": "integer"
}
},
"x-ratelimit-remaining": {
"description": "Requests remaining in the current window.",
"schema": {
"type": "integer"
}
},
"x-ratelimit-reset": {
"description": "Seconds until the current rate-limit window resets.",
"schema": {
"type": "integer"
}
}
},
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"artifacts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"campaignId": {
"type": "string"
},
"sha256": {
"type": "string"
},
"byteSize": {
"type": "integer"
},
"mediaType": {
"type": "string"
},
"fileName": {
"type": "string"
},
"uploadedBy": {
"type": "string"
},
"uploadedActor": {
"type": "string"
},
"uploadedSource": {
"type": "string"
},
"uploadedAt": {
"type": "string"
},
"uploadedClientId": {
"type": "string"
}
},
"required": [
"id",
"campaignId",
"sha256",
"byteSize",
"mediaType",
"fileName",
"uploadedBy",
"uploadedActor",
"uploadedSource",
"uploadedAt"
],
"additionalProperties": false
}
},
"reports": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string"
},
"digest": {
"type": "string"
},
"revision": {
"type": "integer"
},
"reportRef": {
"type": "string"
},
"providerReference": {
"type": "string"
},
"fromDate": {
"type": "string"
},
"toDate": {
"type": "string"
},
"currency": {
"type": "string"
},
"totalMinor": {
"type": "integer"
},
"evidenceArtifact": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"campaignId": {
"type": "string"
},
"sha256": {
"type": "string"
},
"byteSize": {
"type": "integer"
},
"mediaType": {
"type": "string"
},
"fileName": {
"type": "string"
},
"uploadedBy": {
"type": "string"
},
"uploadedActor": {
"type": "string"
},
"uploadedSource": {
"type": "string"
},
"uploadedAt": {
"type": "string"
},
"uploadedClientId": {
"type": "string"
}
},
"required": [
"id",
"campaignId",
"sha256",
"byteSize",
"mediaType",
"fileName",
"uploadedBy",
"uploadedActor",
"uploadedSource",
"uploadedAt"
],
"additionalProperties": false
},
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"channel": {
"type": "string",
"enum": [
"ctv",
"audio",
"tv",
"cinema",
"dooh",
"search",
"social"
]
},
"adapterKey": {
"type": "string"
},
"campaignId": {
"type": "string"
},
"lineItemId": {
"type": "string"
},
"impressions": {
"type": "integer",
"minimum": 0
},
"spendMinor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"enum": [
"GBP",
"USD",
"EUR"
]
},
"reach": {
"type": "integer",
"minimum": 0
},
"geo": {
"type": "string"
},
"placement": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"kind": {
"type": "string",
"enum": [
"screen",
"app-channel",
"show",
"venue",
"attribute-package",
"network"
]
},
"format": {
"type": "string"
},
"owner": {
"type": "string"
},
"location": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
},
"postcodeDistrict": {
"type": "string"
}
},
"required": [
"city"
],
"additionalProperties": true
},
"cpmMinor": {
"type": "integer",
"exclusiveMinimum": 0
},
"audienceMonthly": {
"type": "integer",
"minimum": 0
},
"externalId": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": true
},
"native": {
"type": "object",
"additionalProperties": {
"type": [
"string",
"number"
]
},
"default": {}
}
},
"required": [
"date",
"channel",
"adapterKey",
"campaignId",
"lineItemId",
"impressions",
"spendMinor",
"currency"
],
"additionalProperties": true
}
},
"submittedAt": {
"type": "string"
},
"submittedBy": {
"type": "string"
},
"approvedAt": {
"type": [
"string",
"null"
]
},
"approvedBy": {
"type": [
"string",
"null"
]
},
"note": {
"type": "string"
},
"approvalNote": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"status",
"digest",
"revision",
"reportRef",
"providerReference",
"fromDate",
"toDate",
"currency",
"totalMinor",
"evidenceArtifact",
"rows",
"submittedAt",
"submittedBy",
"approvedAt",
"approvedBy",
"note",
"approvalNote"
],
"additionalProperties": false
}
},
"providerSpend": {
"type": "object",
"properties": {
"required": {
"type": "boolean"
},
"due": {
"type": "boolean"
},
"readyForFundRelease": {
"type": "boolean"
},
"evidenceClosed": {
"type": "boolean"
},
"reportThrough": {
"type": "string"
},
"lines": {
"type": "array",
"items": {
"type": "object",
"properties": {
"channelCampaignId": {
"type": "string"
},
"state": {
"type": "string"
}
},
"required": [
"channelCampaignId",
"state"
],
"additionalProperties": true
}
}
},
"required": [
"required",
"due",
"readyForFundRelease",
"evidenceClosed",
"reportThrough",
"lines"
],
"additionalProperties": true
},
"reportWindow": {
"anyOf": [
{
"type": "object",
"properties": {
"fromDate": {
"type": "string"
},
"toDate": {
"type": "string"
},
"currency": {
"type": "string"
}
},
"required": [
"fromDate",
"toDate",
"currency"
],
"additionalProperties": true
},
{
"type": "null"
}
]
},
"eligibility": {
"type": "object",
"properties": {
"ready": {
"type": "boolean"
},
"blockers": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"ready",
"blockers"
],
"additionalProperties": true
},
"fundsReleased": {
"type": "boolean"
}
},
"required": [
"artifacts",
"reports",
"providerSpend",
"reportWindow",
"eligibility",
"fundsReleased"
],
"additionalProperties": false
}
}
}
}Operation constraints
{
"x-response-schema-completeness": "modeled",
"x-rate-limit": {
"requests": 300,
"windowMilliseconds": 60000,
"key": "request IP",
"headers": [
"x-ratelimit-limit",
"x-ratelimit-remaining",
"x-ratelimit-reset"
]
},
"x-idempotency": {
"policy": "not-generalized",
"note": "There is no universal Idempotency-Key middleware. Only the documented endpoint mechanisms protect retries."
},
"x-human-only": true,
"x-required-human-permissions": [],
"x-internal-staff-only": true,
"x-staff-authority": "server-owned revocable membership and explicit client assignments"
}Complete operation
{
"operationId": "get_api_v1_internal_fulfilment_bookings_bookingId_lines_lineId_finance",
"summary": "Review supplier report and invoice closeout",
"description": "Internal staff surface. Client data is restricted to explicit server-owned customer assignments; inaccessible resources return 404. Product/channel entitlements also apply.\n\nRequires a verified Supabase human web session and active, revocable database-owned staff membership. Customer operator permissions, request headers and delegated agents cannot grant staff access. The session endpoint returns access:false to nonstaff without staff or customer identifiers.",
"tags": [
"Internal"
],
"security": [
{
"bearerAuth": []
}
],
"parameters": [
{
"name": "bookingId",
"in": "path",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
},
{
"name": "lineId",
"in": "path",
"required": true,
"schema": {
"type": "string",
"minLength": 1
}
}
],
"responses": {
"400": {
"description": "Invalid request or unsupported fields",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Missing or invalid authentication",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Permission or product scope refused",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Route or tenant-scoped resource not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"409": {
"description": "State, revision, approval, funding or idempotency conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"422": {
"description": "Supplier configuration, capability or upstream refusal",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached; wait before retrying",
"headers": {
"x-ratelimit-limit": {
"description": "Maximum requests permitted in the current rate-limit window.",
"schema": {
"type": "integer"
}
},
"x-ratelimit-remaining": {
"description": "Requests remaining in the current window.",
"schema": {
"type": "integer"
}
},
"x-ratelimit-reset": {
"description": "Seconds until the current rate-limit window resets.",
"schema": {
"type": "integer"
}
},
"retry-after": {
"description": "Minimum seconds to wait before retrying.",
"schema": {
"type": "integer"
}
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Internal error; inspect state before retrying a mutation",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"503": {
"description": "Dependency or authentication verifier unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"2XX": {
"description": "Successful response.",
"headers": {
"x-ratelimit-limit": {
"description": "Maximum requests permitted in the current rate-limit window.",
"schema": {
"type": "integer"
}
},
"x-ratelimit-remaining": {
"description": "Requests remaining in the current window.",
"schema": {
"type": "integer"
}
},
"x-ratelimit-reset": {
"description": "Seconds until the current rate-limit window resets.",
"schema": {
"type": "integer"
}
}
},
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"artifacts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"campaignId": {
"type": "string"
},
"sha256": {
"type": "string"
},
"byteSize": {
"type": "integer"
},
"mediaType": {
"type": "string"
},
"fileName": {
"type": "string"
},
"uploadedBy": {
"type": "string"
},
"uploadedActor": {
"type": "string"
},
"uploadedSource": {
"type": "string"
},
"uploadedAt": {
"type": "string"
},
"uploadedClientId": {
"type": "string"
}
},
"required": [
"id",
"campaignId",
"sha256",
"byteSize",
"mediaType",
"fileName",
"uploadedBy",
"uploadedActor",
"uploadedSource",
"uploadedAt"
],
"additionalProperties": false
}
},
"reports": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string"
},
"digest": {
"type": "string"
},
"revision": {
"type": "integer"
},
"reportRef": {
"type": "string"
},
"providerReference": {
"type": "string"
},
"fromDate": {
"type": "string"
},
"toDate": {
"type": "string"
},
"currency": {
"type": "string"
},
"totalMinor": {
"type": "integer"
},
"evidenceArtifact": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"campaignId": {
"type": "string"
},
"sha256": {
"type": "string"
},
"byteSize": {
"type": "integer"
},
"mediaType": {
"type": "string"
},
"fileName": {
"type": "string"
},
"uploadedBy": {
"type": "string"
},
"uploadedActor": {
"type": "string"
},
"uploadedSource": {
"type": "string"
},
"uploadedAt": {
"type": "string"
},
"uploadedClientId": {
"type": "string"
}
},
"required": [
"id",
"campaignId",
"sha256",
"byteSize",
"mediaType",
"fileName",
"uploadedBy",
"uploadedActor",
"uploadedSource",
"uploadedAt"
],
"additionalProperties": false
},
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"channel": {
"type": "string",
"enum": [
"ctv",
"audio",
"tv",
"cinema",
"dooh",
"search",
"social"
]
},
"adapterKey": {
"type": "string"
},
"campaignId": {
"type": "string"
},
"lineItemId": {
"type": "string"
},
"impressions": {
"type": "integer",
"minimum": 0
},
"spendMinor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"enum": [
"GBP",
"USD",
"EUR"
]
},
"reach": {
"type": "integer",
"minimum": 0
},
"geo": {
"type": "string"
},
"placement": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"kind": {
"type": "string",
"enum": [
"screen",
"app-channel",
"show",
"venue",
"attribute-package",
"network"
]
},
"format": {
"type": "string"
},
"owner": {
"type": "string"
},
"location": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
},
"postcodeDistrict": {
"type": "string"
}
},
"required": [
"city"
],
"additionalProperties": true
},
"cpmMinor": {
"type": "integer",
"exclusiveMinimum": 0
},
"audienceMonthly": {
"type": "integer",
"minimum": 0
},
"externalId": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": true
},
"native": {
"type": "object",
"additionalProperties": {
"type": [
"string",
"number"
]
},
"default": {}
}
},
"required": [
"date",
"channel",
"adapterKey",
"campaignId",
"lineItemId",
"impressions",
"spendMinor",
"currency"
],
"additionalProperties": true
}
},
"submittedAt": {
"type": "string"
},
"submittedBy": {
"type": "string"
},
"approvedAt": {
"type": [
"string",
"null"
]
},
"approvedBy": {
"type": [
"string",
"null"
]
},
"note": {
"type": "string"
},
"approvalNote": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"status",
"digest",
"revision",
"reportRef",
"providerReference",
"fromDate",
"toDate",
"currency",
"totalMinor",
"evidenceArtifact",
"rows",
"submittedAt",
"submittedBy",
"approvedAt",
"approvedBy",
"note",
"approvalNote"
],
"additionalProperties": false
}
},
"providerSpend": {
"type": "object",
"properties": {
"required": {
"type": "boolean"
},
"due": {
"type": "boolean"
},
"readyForFundRelease": {
"type": "boolean"
},
"evidenceClosed": {
"type": "boolean"
},
"reportThrough": {
"type": "string"
},
"lines": {
"type": "array",
"items": {
"type": "object",
"properties": {
"channelCampaignId": {
"type": "string"
},
"state": {
"type": "string"
}
},
"required": [
"channelCampaignId",
"state"
],
"additionalProperties": true
}
}
},
"required": [
"required",
"due",
"readyForFundRelease",
"evidenceClosed",
"reportThrough",
"lines"
],
"additionalProperties": true
},
"reportWindow": {
"anyOf": [
{
"type": "object",
"properties": {
"fromDate": {
"type": "string"
},
"toDate": {
"type": "string"
},
"currency": {
"type": "string"
}
},
"required": [
"fromDate",
"toDate",
"currency"
],
"additionalProperties": true
},
{
"type": "null"
}
]
},
"eligibility": {
"type": "object",
"properties": {
"ready": {
"type": "boolean"
},
"blockers": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"ready",
"blockers"
],
"additionalProperties": true
},
"fundsReleased": {
"type": "boolean"
}
},
"required": [
"artifacts",
"reports",
"providerSpend",
"reportWindow",
"eligibility",
"fundsReleased"
],
"additionalProperties": false
}
}
}
}
},
"x-response-schema-completeness": "modeled",
"x-rate-limit": {
"requests": 300,
"windowMilliseconds": 60000,
"key": "request IP",
"headers": [
"x-ratelimit-limit",
"x-ratelimit-remaining",
"x-ratelimit-reset"
]
},
"x-idempotency": {
"policy": "not-generalized",
"note": "There is no universal Idempotency-Key middleware. Only the documented endpoint mechanisms protect retries."
},
"x-human-only": true,
"x-required-human-permissions": [],
"x-internal-staff-only": true,
"x-staff-authority": "server-owned revocable membership and explicit client assignments"
}