%%{init: { "theme": "base", "themeVariables": { "fontSize": "18px", "background": "transparent", "actorBkg": "#038851", "actorTextColor": "#ffffff", "actorBorder": "#026139", "actorLineColor": "#94a3b8", "signalColor": "#64748b", "signalTextColor": "#059669", "noteBkgColor": "#e6f4ee", "noteTextColor": "#02502f", "noteBorderColor": "#038851", "activationBkgColor": "#c6ebdc", "activationBorderColor": "#026139", "sequenceNumberColor": "#ffffff" }, "sequence": { "useMaxWidth": true, "actorMargin": 70, "width": 150, "height": 60, "boxMargin": 12, "noteMargin": 14, "messageMargin": 50, "diagramMarginX": 20, "diagramMarginY": 20, "actorFontSize": 18, "actorFontWeight": 700, "noteFontSize": 15, "noteFontFamily": "ui-monospace, SFMono-Regular, Menlo, Consolas, monospace", "messageFontSize": 16, "messageFontWeight": 700, "noteAlign": "left", "mirrorActors": false } }}%%
sequenceDiagram
autonumber
participant Partner as Partner Integration
participant API as REST API
participant GCS as Google Cloud Storage
rect rgb(250,238,218)
Note over Partner,API: 1. Request Signed URL
Partner->>+API: POST /inventory { "callbackUrl": "..." }
API->>+GCS: Request Signed URL
GCS-->>-API: Return Signed URL + Required Headers
API-->>-Partner: 200 OK { "signedUrl": "...", "headers": {...} }
end
rect rgb(250,238,218)
Note over Partner,GCS: 2. Submit JSONL (Within 15m)
Partner->>+GCS: PUT Inventory JSONL to Signed URL (with Required Headers)
GCS-->>-Partner: 200 OK (Upload Accepted)
end
rect rgb(250,238,218)
Note over GCS: 3. Asynchronous Processing
GCS->>GCS: Process Inventory JSONL
end
rect rgb(250,238,218)
Note over GCS,Partner: 4. Completion Callback
GCS->>+Partner: POST callbackUrl { status: "processed" }
Partner-->>-GCS: 200 OK
end