ProcessorsResource ================== Introduction ------------ Processors Resource. Hosts the API for processor lifecycle, marketplace metadata, execution, payments, logs, sharing, and UI descriptors. All endpoints are under base path ``/processors``. Most endpoints require ``x-session-token``. A few download endpoints also accept token via query parameters for browser usage. High-level capability groups: - Upload, update, redeploy, library update, delete processor assets. - Execute processors and estimate credits for area-priced apps. - Marketplace list/detail retrieval and app payment integration with Stripe. - Runtime and build logs retrieval. - Processor sharing and UI descriptor management. Common Models ------------- - PrimitiveResult: intValue, stringValue, doubleValue, boolValue - DeployedProcessorViewModel: processorId, processorName, processorVersion, processorDescription, imgLink, logo, publisher, publisherNickName, paramsSample, isPublic, minuteTimeout, type, sharedWithMe, readOnly, deploymentOngoing, lastUpdate - AppFilterViewModel: categories, publishers, name, score, minPrice, maxPrice, itemsPerPage, page, orderBy, orderDirection - AppListViewModel: processorId, processorName, processorDescription, imgLink, publisher, publisherNickName, score, votes, friendlyName, price, squareKilometerPrice, isMine, buyed, logo, readOnly - AppDetailViewModel: marketplace app detail payload with description, pricing, categories, images, score, store visibility and metadata - RunningProcessorViewModel: processorId, name, processingIdentifier, status, jsonEncodedResult, message - ProcessorLogViewModel: processWorkspaceId, logDate, logRow, rowNumber - ProcessorSharingViewModel: userId, permissions - AppPaymentViewModel: appPaymentId, paymentName, userId, processorId, buySuccess, buyDate, runDate - SuccessResponse / ErrorResponse: standard success/error wrappers used by several endpoints APIs ---- Processor Lifecycle ^^^^^^^^^^^^^^^^^^^ POST /processors/uploadprocessor - Description: Uploads a new processor package (multipart), creates the processor entity, and schedules deploy operation. - Headers: x-session-token - Query params: workspace, name, version, description, type, paramsSample, public, timeout, force - Body: multipart/form-data with file field ``file`` - Notes: name uniqueness and filename/path checks enforced; paramsSample must be valid JSON when provided. - Return: PrimitiveResult (HTTP-like status in intValue) POST /processors/update - Description: Updates basic processor metadata (description, visibility, timeout, parameter sample). - Headers: x-session-token - Query params: processorId - Body: DeployedProcessorViewModel - Return codes: 200, 401, 403, 400/500 on validation/storage errors POST /processors/updatefiles - Description: Uploads and applies processor file update (zip or single file), optionally unzips, propagates to nodes, and triggers library update. - Headers: x-session-token - Query params: processorId, workspace, file - Body: multipart/form-data with file field ``file`` - Return codes: 200, 401, 403, 400, 500 GET /processors/redeploy - Description: Schedules processor redeploy on local node and propagates to compute nodes when called on main node. - Headers: x-session-token - Query params: processorId, workspace - Return codes: 200, 401, 403, 500 GET /processors/libupdate - Description: Forces library update for processor runtime environment; propagates to compute nodes from main node. - Headers: x-session-token - Query params: processorId, workspace - Return codes: 200, 401, 403, 500 GET /processors/cleadbuildflag - Description: Clears processor deployment ongoing flag. - Headers: x-session-token - Query params: processorId - Return codes: 200, 401, 403, 500 GET /processors/delete - Description: Deletes processor from main node workflow; if caller is not owner but has sharing, removes sharing only. - Headers: x-session-token - Query params: processorId, workspace - Notes: on-demand priced processors trigger Stripe deactivation checks. - Return codes: 200, 401, 400, 500 GET /processors/nodedelete - Description: Node-side delete endpoint for distributed cleanup on compute nodes. - Headers: x-session-token - Query params: processorId, workspace, processorName, processorType, version - Notes: valid only on compute nodes (not main node). - Return codes: 200, 401, 400, 500 GET /processors/help - Description: Returns help/readme markdown text found in processor folder. - Headers: x-session-token - Query params: name - Return: PrimitiveResult (boolValue true + stringValue help text on success) Execution ^^^^^^^^^ GET /processors/run - Description: Runs processor using query ``encodedJson``. - Headers: x-session-token - Query params: name, encodedJson, workspace, parent, notify - Return: RunningProcessorViewModel POST /processors/run - Description: Runs processor using request body as encoded JSON payload (supports longer parameters). - Headers: x-session-token - Query params: name, workspace, parent, notify - Body: encoded parameter JSON string - Return: RunningProcessorViewModel POST /processors/getcredits - Description: Computes credits required for area-priced processor run based on AOI/bounding box parameter. - Headers: x-session-token - Query params: processorId - Body: encoded JSON parameters - Return codes: 200 (number), 400, 401, 403, 500 Inventory And Marketplace ^^^^^^^^^^^^^^^^^^^^^^^^^ GET /processors/getdeployed - Description: Lists all deployed processors accessible to the user (owned, shared, public), with readOnly/shared flags. - Headers: x-session-token - Return: array of DeployedProcessorViewModel - Notes: returns empty list on invalid session/errors. GET /processors/getprocessor - Description: Returns one deployed processor by id or name. - Headers: x-session-token - Query params: processorId, name - Return: DeployedProcessorViewModel - Notes: returns empty/default view model when not found/forbidden. POST /processors/getmarketlist - Description: Returns marketplace list with filters (name, categories, publishers, score, price), sorting, and pagination. - Headers: x-session-token - Body: AppFilterViewModel - Return: array of AppListViewModel GET /processors/getmarketdetail - Description: Returns detailed marketplace info for one processor name. - Headers: x-session-token - Query params: processorname - Return: AppDetailViewModel - Return codes: 200, 401, 403, 400, 500 Payments ^^^^^^^^ POST /processors/addAppPayment - Description: Registers on-demand payment intent metadata before Stripe checkout. - Headers: x-session-token - Body: AppPaymentViewModel (paymentName, processorId, buyDate required) - Return: SuccessResponse(appPaymentId) - Return codes: 200, 400, 401, 403, 404, 500 GET /processors/stripe/onDemandPaymentUrl - Description: Retrieves Stripe payment URL for one app payment entry. - Headers: x-session-token - Query params: processor, appPayment - Return: SuccessResponse(url) - Return codes: 200, 400, 401, 403, 500 GET /processors/stripe/confirmation/{CHECKOUT_SESSION_ID} - Description: Stripe callback-like confirmation endpoint; validates checkout session and marks app payment as successful. - Path params: CHECKOUT_SESSION_ID - Return: HTML/JS snippet that closes browser window GET /processors/isAppPurchased - Description: Checks if current user can run a priced app now (free/owner/shared/already paid and not currently consumed). - Headers: x-session-token - Query params: processor - Return: boolean - Return codes: 200, 400, 401, 404, 500 GET /processors/byAppPaymentId - Description: Returns payment metadata by app payment id. - Headers: x-session-token - Query params: appPayment - Return: AppPaymentViewModel - Return codes: 200, 400, 401, 404, 500 Logs ^^^^ POST /processors/logs/add - Description: Adds one runtime log row for a processworkspace (or writes to main log if DB app logging disabled). - Headers: x-session-token - Query params: processworkspace - Body: plain log line text - Return codes: 200, 401, 403, 500 GET /processors/logs/count - Description: Returns total number of log rows for processworkspace. - Headers: x-session-token - Query params: processworkspace - Return: integer (``-1`` on errors/unauthorized) GET /processors/logs/list - Description: Returns process logs; optional row range pagination via startrow/endrow. - Headers: x-session-token - Query params: processworkspace, startrow, endrow - Return: array of ProcessorLogViewModel GET /processors/logs/build - Description: Returns stored build logs associated with processor deployment. - Headers: x-session-token - Query params: processorId - Return: array of strings - Return codes: 200, 401, 403, 400, 500 Artifacts ^^^^^^^^^ GET /processors/downloadprocessor - Description: Downloads processor files as zip stream. - Headers: x-session-token (or token query param) - Query params: token, processorId - Return: application/octet-stream zip - Return codes: 200, 401, 403, 204, 500 GET /processors/getcwl - Description: Downloads CWL descriptor file for processor. - Query params: processorName - Return: application/octet-stream attachment - Return codes: 200, 204, 404, 500 Sharing ^^^^^^^ PUT /processors/share/add - Description: Shares processor with another user with optional access rights. - Headers: x-session-token - Query params: processorId, userId, rights - Return: PrimitiveResult (boolValue + message) - Notes: autoshare blocked for non-admins; rights default to READ. GET /processors/share/byprocessor - Description: Lists users and permissions the processor is shared with. - Headers: x-session-token - Query params: processorId - Return: array of ProcessorSharingViewModel (or null on invalid/forbidden) DELETE /processors/share/delete - Description: Removes one user sharing from a processor. - Headers: x-session-token - Query params: processorId, userId - Return: PrimitiveResult Processor UI ^^^^^^^^^^^^ GET /processors/ui - Description: Gets saved processor UI JSON descriptor (defaults to ``{"tabs":[]}``). - Headers: x-session-token - Query params: name - Return: JSON string - Return codes: 200, 401, 403, 400, 500 POST /processors/saveui - Description: Saves/updates processor UI JSON descriptor. - Headers: x-session-token - Query params: name - Body: UI JSON string - Return codes: 200, 401, 403, 400, 500