Documentation Index
Fetch the complete documentation index at: https://docs.fluveo.com/llms.txt
Use this file to discover all available pages before exploring further.
This guide walks you through creating and configuring a marketplace app from scratch.
Step 1: Register your app
Create an app with POST /v1/apps. At minimum, provide a name. You can fill in the remaining fields before submitting for review.
curl -X POST https://api.leanrails.com/v1/apps \
-u "sk_test_xxx:" \
-H "Content-Type: application/json" \
-d '{
"name": "Inventory Sync Pro",
"description": "Automatically syncs inventory levels between your warehouse and Fluveo store.",
"short_description": "Real-time inventory synchronization",
"homepage_url": "https://inventorysync.example.com",
"privacy_policy_url": "https://inventorysync.example.com/privacy",
"support_url": "https://inventorysync.example.com/support",
"distribution_type": "public",
"category": "inventory",
"requested_scopes": [
"read_products",
"read_inventory",
"write_inventory"
],
"redirect_uris": [
"https://inventorysync.example.com/oauth/callback"
],
"webhook_url": "https://inventorysync.example.com/webhooks",
"webhook_events": [
"inventory_level.updated",
"product.created",
"product.updated"
]
}'
Response:
{
"id": "app_1abc2def3ghi",
"object": "app",
"developer_id": "merch_xyz",
"name": "Inventory Sync Pro",
"slug": "inventory-sync-pro-a1b2c3",
"description": "Automatically syncs inventory levels between your warehouse and Fluveo store.",
"short_description": "Real-time inventory synchronization",
"distribution_type": "public",
"status": "draft",
"requested_scopes": ["read_products", "read_inventory", "write_inventory"],
"redirect_uris": ["https://inventorysync.example.com/oauth/callback"],
"webhook_url": "https://inventorysync.example.com/webhooks",
"webhook_secret": "whsec_app_abc123...",
"version": "0.0.0",
"install_count": 0,
"livemode": false,
"created": 1710000000,
"updated": 1710000000
}
The webhook_secret is only returned when the app is created. Store it securely — you will need it to verify webhook deliveries to your app.
Step 2: Update your app
You can update any field on a draft app with POST /v1/apps/:id:
curl -X POST https://api.leanrails.com/v1/apps/app_1abc2def3ghi \
-u "sk_test_xxx:" \
-H "Content-Type: application/json" \
-d '{
"icon_url": "https://inventorysync.example.com/icon.png",
"version": "1.0.0"
}'
Step 3: Generate OAuth credentials
Generate a client_id and client_secret for your app. These are used in the OAuth authorization code flow.
curl -X POST https://api.leanrails.com/v1/apps/app_1abc2def3ghi/credentials \
-u "sk_test_xxx:"
Response:
{
"object": "oauth_client",
"id": "oauthcli_1abc2def3ghi",
"app_id": "app_1abc2def3ghi",
"client_id": "ca_live_abc123def456",
"client_secret": "cs_live_secret_full_value_shown_once",
"client_secret_prefix": "cs_live_sec...",
"created": 1710000100
}
The client_secret is shown exactly once in this response. Store it in a secure secrets manager. If lost, generate a new set of credentials.
You can list your existing credentials (without the full secret) at any time:
curl https://api.leanrails.com/v1/apps/app_1abc2def3ghi/credentials \
-u "sk_test_xxx:"
Step 4: List your apps
Retrieve all apps you have created:
curl "https://api.leanrails.com/v1/apps?limit=10" \
-u "sk_test_xxx:"
Step 5: Retrieve app details
curl https://api.leanrails.com/v1/apps/app_1abc2def3ghi \
-u "sk_test_xxx:"
Step 6: Submit for review
Once your app has all required fields, submit it for marketplace review:
curl -X POST https://api.leanrails.com/v1/apps/app_1abc2def3ghi/submit_for_review \
-u "sk_test_xxx:"
The app status changes from draft to in_review. See App Review Guidelines for what reviewers check.
You can only submit apps in draft or rejected status. If your app was rejected, fix the issues and resubmit.
Required fields for review
The following fields must be set before submission:
| Field | Required for |
|---|
name | All apps |
description | All apps |
redirect_uris (at least one) | All apps |
requested_scopes (at least one) | All apps |
privacy_policy_url | Public apps only |
Deleting a draft app
You can delete an app only while it is in draft status:
curl -X DELETE https://api.leanrails.com/v1/apps/app_1abc2def3ghi \
-u "sk_test_xxx:"
{
"id": "app_1abc2def3ghi",
"object": "app",
"deleted": true
}
Next steps