Marketplace
Developer marketplace API
Documentación de la API de Marketplace
Servidor base: https://services.leadconnectorhq.com
Endpoints
- POST /marketplace/billing/charges — Crear a new wallet charge
- GET /marketplace/billing/charges — Obtener todos los wallet charges
- DELETE /marketplace/billing/charges/{chargeId} — Eliminar a wallet charge
- GET /marketplace/billing/charges/{chargeId} — Obtener specific wallet charge details
- GET /marketplace/billing/charges/has-funds — Check if account has sufficient funds
- DELETE /marketplace/app/{appId}/installations — Uninstall an application
- GET /marketplace/app/{appId}/installations — Obtener Installer Details
- GET /marketplace/app/{appId}/rebilling-config/location/{locationId} — Obtener rebilling config for an app subscription and usage plans
- POST /marketplace/external-auth/migration — Migrate external authentication connection
POST /marketplace/billing/charges
Crear a new wallet charge Scopes requeridos: charges.write
Cuerpo de la peticion (application/json):
- appId (requerido) — string — App Id of the App
- meterId (requerido) — string — Billing Meter Id (you can find this on your app's pricing page)
- eventId (requerido) — string — Event Id / Transaction Id on your server's side. This will help you maintain the reference of the event/transaction on your end that you charged the customer for.
- userId — string — User Id
- locationId (requerido) — string — Id of the Sub-Account to be charged
- companyId (requerido) — string — Id of the Agency the Sub-account belongs to
- description (requerido) — string — Description of the charge
- price — number — Price per unit to charge
- units (requerido) — number — Number of units to charge
- eventTime — string — The timestamp when the event/transaction was performed. If blank, the billing timestamp will be set as the event time. ISO8601 Format.
Respuestas:
- 201 — Charge created successfully
- 400 — Peticion invalida
- 422 — Entidad no procesable
GET /marketplace/billing/charges
Obtener todos los wallet charges Scopes requeridos: charges.readonly
Parametros:
- meterId (query, string) — Billing Meter Id (you can find this on your app's pricing page on the developer portal)
- eventId (query, string) — Event Id / Transaction Id
- userId (query, string) — Filter results by User Id that your server passed via API when the charge was created
- startDate (query, string) — Filter results AFTER a specific date. Use this in combination with endDate to filter results in a specific time window.
- endDate (query, string) — Filter results BEFORE a specific date. Use this in combination with startDate to filter results in a specific time window.
- skip (query, number) — Número de registros a omitir
- limit (query, number) — Maximum number of records to return
Respuestas:
- 200 — Returns list of wallet charges
- 422 — Entidad no procesable
DELETE /marketplace/billing/charges/{chargeId}
Eliminar a wallet charge Scopes requeridos: charges.write
Parametros:
- chargeId (path, string) (requerido) — Id of the charge to delete
Respuestas:
- 200 — Charge deleted successfully
- 404 — Charge not found
- 422 — Entidad no procesable
GET /marketplace/billing/charges/{chargeId}
Obtener specific wallet charge details Scopes requeridos: charges.readonly
Parametros:
- chargeId (path, string) (requerido) — Id of the charge to retrieve
Respuestas:
- 200 — Returns charge details
- 404 — Charge not found
- 422 — Entidad no procesable
GET /marketplace/billing/charges/has-funds
Check if account has sufficient funds Scopes requeridos: charges.readonly
Respuestas:
- 200 — Returns fund availability status
- 422 — Entidad no procesable
DELETE /marketplace/app/{appId}/installations
Uninstall an application Uninstalls an application from your company or a specific location. This will remove the application`s access and stop all its functionalities
Scopes requeridos: oauth.write, oauth.write
Parametros:
- appId (path, string) (requerido) — The application id which is to be uninstalled.
- Versión (header, string) (requerido) — Versión de la API
Cuerpo de la peticion (application/json):
- companyId — string — The company id from which the application is to be uninstalled. If you pass agency token, then companyId is required. It will uninstall application from agency as well as all sub-accounts.
- locationId — string — The location id from which the application is to be uninstalled. If you pass location token, then locationId is required. It will uninstall application from that location only.
- reason — string — The reason for uninstalling the application. Reason is required if you are uninstalling the application as a developer.
Respuestas:
- 200 — Successfully uninstalled the application
- 400 — Peticion invalida
- 401 — No autorizado
- 422 — Entidad no procesable
GET /marketplace/app/{appId}/installations
Obtener Installer Details Fetches installer details for the authenticated user. This endpoint returns information about the company, location, user, and installation details associated with the current OAuth token.
Scopes requeridos: marketplace-installer-details.readonly, marketplace-installer-details.readonly
Parametros:
- appId (path, string) (requerido) — Id of the app to get installer details
- Versión (header, string) (requerido) — Versión de la API
Respuestas:
- 200 — Successfully retrieved installer details. Returns company, location, user, and installation information.
- 400 — Bad Request. Invalid request parameters or missing required data.
- 403 — Forbidden. The client does not have necessary permissions to access installer details.
GET /marketplace/app/{appId}/rebilling-config/location/{locationId}
Obtener rebilling config for an app subscription and usage plans Get rebilling config for an app subscription and usage plans for the authenticated sub-account. This endpoint returns the subscription and usage plans for an app.
Scopes requeridos: oauth.readonly
Parametros:
- appId (path, string) (requerido) — Id of the app to get rebilling config
- locationId (path, string) (requerido) — Id of the Sub-Account location to get rebilling config for
- Versión (header, string) (requerido) — Versión de la API
Respuestas:
- 200 — Successfully retrieved rebilling config for the app
- 400 — Bad Request. Invalid request parameters or missing required data.
- 403 — Forbidden. The client does not have necessary permissions to access installer details.
POST /marketplace/external-auth/migration
Migrate external authentication connection Migrates an external authentication connection credentials (basic or oauth2) for a specific app and location. This endpoint validates the app configuration, stores credentials safely in CRM's native encrypted storage. With this the lifecycle of the token is managed by CRM.
Scopes requeridos: marketplace-external-auth-migration.write, marketplace-external-auth-migration.write
Parametros:
- Versión (header, string) (requerido) — Versión de la API
Cuerpo de la peticion (application/json):
- type (requerido) — string — Type of authentication - basic or oauth2
- locationId (requerido) — string — Location Id
- appId (requerido) — string — App Id
- appVersionId (requerido) — string — App Versión Id
- accountId (requerido) — string — Connection identifier
- apiKey — string — API Key (supported when type is basic)
- basicCredentials — object — Basic auth credentials as key/value pairs (supported when type is basic). Keys are validated against the app versión externalAuthConfig.fields.
- accessToken — string — Access token (required when type is oauth2)
- refreshToken — string — Refresh token (required when type is oauth2)
- expiryIn — number — Access token expiry time in milliseconds (optional for oauth2)
- expiryAt — number — Timestamp for access token expiry (optional for oauth2)
- scopes — array — OAuth2 scopes (optional for oauth2)
- displayName — string — Display name for the connection (optional, defaults to accountId)
- isDefault — boolean — Whether this is the default connection for the location (optional, defaults to false)
Respuestas:
- 201 — Connection migrated successfully
- 400 — Bad request - invalid input or auth type mismatch
- 401 — Unauthorized - invalid or missing token
- 404 — App not found
- 500 — Error interno del servidor
