Note: This is a (Limited Release) API available only to select developers approved by business units.
Enables a seller adding an ad or item on a Partner's site to automatically create an eBay listing draft using the item details from the Partner's site.
Note: This is a (Limited Release) API available only to select developers approved by business units.
The Logistics API resources offer the following capabilities:
- shipping_quote – Consolidates into a list a set of live shipping rates, or quotes, from which you can select a rate to ship a package.
- shipment – Creates a "shipment" for the selected shipping rate.
Select one of the live rates and using its associated rateId, create a "shipment" for the package by calling createFromShippingQuote. Creating a shipment completes an agreement, and the cost of the base service and any added shipping options are summed into the returned totalShippingCost value. This action also generates a shipping label that you can use to ship the package. The total cost of the shipment is incurred when the package is shipped using the supplied shipping label.
Important! Sellers must set up a payment method via their eBay account before they can use the methods in this API to create a shipment and the associated shipping label.
The Marketing API offers two platforms that sellers can use to promote and advertise their products:
- Promoted Listings is an eBay ad service that lets sellers set up ad campaigns for the products they want to promote. eBay displays the ads in search results and in other marketing modules as SPONSORED listings. If an item in a Promoted Listings campaign sells, the seller is assessed a Promoted Listings fee, which is a seller-specified percentage applied to the sales price. For complete details, refer to the Promoted Listings playbook.
- Promotions Manager gives sellers a way to offer discounts on specific items as a way to attract buyers to their inventory. Sellers can set up discounts (such as "20% off" and other types of offers) on specific items or on an entire customer order. To further attract buyers, eBay prominently displays promotion teasers throughout buyer flows. For complete details, see Promotions Manager.
Marketing reports, on both the Promoted Listings and Promotions Manager platforms, give sellers information that shows the effectiveness of their marketing strategies. The data gives sellers the ability to review and fine tune their marketing efforts.
Important! Sellers must have an active eBay Store subscription, and they must accept the Terms and Conditions before they can make requests to these APIs in the Production environment. There are also site-specific listings requirements and restrictions associated with these marketing tools, as listed in the "requirements and restrictions" sections for Promoted Listings and Promotions Manager.
The table below lists all the Marketing API calls grouped by resource.
The Negotiations API gives sellers the ability to proactively send discount offers to buyers who have shown an "interest" in their listings.
By sending buyers discount offers on listings where they have shown an interest, sellers can increase the velocity of their sales.
There are various ways for a buyer to show interest in a listing. For example, if a buyer adds the listing to their Watch list, or if they add the listing to their shopping cart and later abandon the cart, they are deemed to have shown an interest in the listing.
In the offers that sellers send, they can discount their listings by either a percentage off the listing price, or they can set a new discounted price that is lower than the original listing price.
For details about how seller offers work, see Sending offers to buyers.
The Recommendation API returns information that sellers can use to optimize the configuration of their listings on eBay.
Currently, the API contains a single method, findListingRecommendations. This method provides information that sellers can use to configure Promoted Listings ad campaigns to maximize the visibility of their items in the eBay marketplace.
This is the public REST API for elmah.io. All of the integrations communicates with elmah.io through this API.
For additional help getting started with the API, visit the following help articles:
- [Using the REST API](https://docs.elmah.io/using-the-rest-api/)
- [Where is my API key?](https://docs.elmah.io/where-is-my-api-key/)
- [Where is my log ID?](https://docs.elmah.io/where-is-my-log-id/)
- [How to configure API key permissions](https://docs.elmah.io/how-to-configure-api-key-permissions/)
Download [OpenAPI 3.0 Specification](/OpenAPI-Enode-v1.4.0.json) Download [Postman Collection](/Postman-Enode-v1.4.0.json) The Enode API is designed to make smart charging applications easy to develop. We provide an abstraction layer that reduces the complexity when extracting vehicle data and sending commands to vehicles from a variety of manufacturers. The API has a RESTful architecture and utilizes OAuth2 authorization. We are always available to handle any issues or just answer your questions. Feel free to reach out on post@enode.io ## Registration for API access In order to use the API you will need a `client_id` and `client_secret`. Please contact us if you are interested in using our API in production, and we will provide these credentials. # Authorization Vehicle / hardware access via the Enode API is granted to your application by the User in a standard OAuth `Authorization Code` flow. > The authorization scheme documented here is the recommended approach for most situations. However, it is also possible to user other OAuth flows, non-confidential clients, and temporary users. Please feel free to contact us if you have any questions about your use-case or the integration of your existing infrastructure. ### Preparation: Configure your OAuth client Because Enode API implements the OAuth 2.0 spec completely and without modifications, you can avoid rolling your own OAuth client implementation and instead use a well-supported and battle-tested implementation. This is strongly recommended. Information on available OAuth clients for many languages is available [here](https://oauth.net/code/) To configure your chosen OAuth client, you will need these details: - Your `client_id` - Your `client_secret` - Authorization URL: `https://link.test.enode.io/oauth2/auth` - Token URL: `https://link.test.enode.io/oauth2/token` ```javascript // Node.js + openid-client example const enodeIssuer = await Issuer.discover('https://link.test.enode.io'); const client = new enodeIssuer.Client({ client_id: 'xyz', client_secret: 'shhhhh', redirect_uris: ['http://localhost:5000/callback'], response_types: ['code'], }); ``` ### Preparation: Obtain a client access token via OAuth Client Credentials Grant Your OAuth client will have a method for using the `OAuth 2.0 Client Credentials Grant` to obtain an access token. ```javascript // Node.js + openid-client example const clientAccessToken = await client.grant({grant_type: "client_credentials"}); ``` This access token belongs to your client and is used for administrative actions, such as the next step. This token should be cached by your server and reused until it expires, at which point your server should request a new one. ### Step 1. Generate an Enode Link session for your User and launch the OAuth flow When your User indicates that they want to connect their hardware to your app, your server must call [Link User](#operation/postUsersUseridLink) to generate an Enode Link session for your User. The User ID can be any string that uniquely identifies the User, but it is recommended that you use the primary key by which you identify the User within your application. Example Request: ``` POST /users/{userId}/link HTTP/1.1 Authorization: Bearer {access_token} { "forceLanguage": "nb-NO", "vendor": "Tesla", } ``` Example Response: ``` { "linkState": "ZjE2MzMxMGFiYmU4MzcxOTU1ZmRjMTU5NGU2ZmE4YTU3NjViMzIwY2YzNG", } ``` The returned linkState must be stored by your server, attached to the session of the authenticated user for which it was generated. Your OAuth client will provide a method to construct an authorization URL for your user. That method will require these details: - Redirect URI - The URI to which your user should be redirected when the Oauth flow completes - Scope - The OAuth scope(s) you wish to request access to (see list of valid values [here](#section/Authentication/AccessTokenBearer)) - State - The value of `linkState` from the request above To launch the OAuth flow, send your user to the authorization URL constructed by your OAuth client. This can be done in an embedded webview within a native iOS/Android app, or in the system's default browser. ```javascript // Node.js + openid-client + express example // Construct an OAuth authorization URL const authorizationUrl = client.authorizationUrl({ scope: "offline_access all", state: linkState }); // Redirect user to authorization URL res.redirect(authorizationUrl); ``` ### Step 2. User grants consent In the Link UI webapp the user will follow 3 steps: 1. Choose their hardware from a list of supported manufacturers (EVs and charging boxes). For certain EV makes it will be necessary to also select a charge box. 2. For each selection, the user will be presented with the login screen for that particular hardware. The user must successfully log in. 3. A summary of the requested scopes will be presented to the user. The user must choose whether to grant access to your application. ### Step 3. OAuth flow concludes with a callback When the user has completed their interactions, they will be redirected to the `Redirect URI` you provided in Step 1, with various metadata appended as query parameters. Your OAuth client will have a method to parse and validate that metadata, and fetch the granted access and refresh tokens. Among that metadata will be a `state` value - you must verify that it is equal to the `linkState` value persisted in Step 1, as [a countermeasure against CSRF attacks](https://tools.ietf.org/html/rfc6819#section-4.4.1.8). ```javascript // Node.js + openid-client + express example // Fetch linkState from user session const linkState = get(req, 'session.linkState'); // Parse relevant parameters from request URL const params = client.callbackParams(req); // Exchange authorization code for access and refresh tokens // In this example, openid-client does the linkState validation check for us const tokenSet = await client.oauthCallback('http://localhost:5000/callback', params, {state: linkState}) ``` With the access token in hand, you can now access resources on behalf of the user. # Errors And Problems ## OAuth Authorization Request When the User has completed the process of allowing/denying access in Enode Link, they will be redirected to your configured redirect URI. If something has gone wrong, query parameters `error` and `error_description` will be set as documented in [Section 4.1.2.1](https://tools.ietf.org/html/rfc6749#section-4.1.2.1) of the OAuth 2.0 spec: |error |error_description| |---------------------------|-----------------| |invalid_request |The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed.| |unauthorized_client |The client is not authorized to request an authorization code using this method.| |access_denied |The resource owner or authorization server denied the request.| |unsupported_response_type |The authorization server does not support obtaining an authorization code using this method.| |invalid_scope |The requested scope is invalid, unknown, or malformed.| |server_error |The authorization server encountered an unexpected condition that prevented it from fulfilling the request.| |temporarily_unavailable |The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server| Example: ``` https://website.example/oauth_callback?state=e0a86fe5&error=access_denied&error_description=The+resource+owner+or+authorization+server+denied+the+request. ``` ## Errors when accessing a User's resources When using an `access_token` to access a User's resources, the following HTTP Status Codes in the 4XX range may be encountered: |HTTP Status Code |Explanation | |---------------------------|-----------------| |400 Bad Request |The request payload has failed schema validation / parsing |401 Unauthorized |Authentication details are missing or invalid |403 Forbidden |Authentication succeeded, but the authenticated user doesn't have access to the resource |404 Not Found |A non-existent resource is requested |429 Too Many Requests |Rate limiting by the vendor has prevented us from completing the request In all cases, an [RFC7807 Problem Details](https://tools.ietf.org/html/rfc7807) body is returned to aid in debugging. Example: ``` HTTP/1.1 400 Bad Request Content-Type: application/problem+json { "type": "https://docs.enode.io/problems/payload-validation-error", "title": "Payload validation failed", "detail": "\"authorizationRequest.scope\" is required", } ```
[![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/80638214aa04722c9203) or View Postman docs # Quickstart Visit [github](https://github.com/EmitKnowledge/Envoice) to view the quickstart tutorial.
![postman - tutorial - 1](/Assets/images/api/postman-tutorial/postman-tutorial-1.png) --- A new page will open. Click the ""Postman for windows"" to run postman as a desktop app. Make sure you have already [installed](https://www.getpostman.com/docs/postman/launching_postman/installation_and_updates) Postman.
![postman - tutorial - 2](/Assets/images/api/postman-tutorial/postman-tutorial-2.png) --- In chrome an alert might show up to set a default app for opening postman links. Click on ""Open Postman"".
![postman - tutorial - 3](/Assets/images/api/postman-tutorial/postman-tutorial-3.png) --- The OpenAPI specification will be imported in Postman as a new collection named ""Envoice api""
![postman - tutorial - 4](/Assets/images/api/postman-tutorial/postman-tutorial-4.png) --- When testing be sure to check and modify the environment variables to suit your api key and secret. The domain is set to envoice's endpoint so you don't really need to change that. \*Eye button in top right corner
![postman - tutorial - 5](/Assets/images/api/postman-tutorial/postman-tutorial-5.png)
![postman - tutorial - 6](/Assets/images/api/postman-tutorial/postman-tutorial-6.png) --- You don't need to change the values of the header parameters, because they will be replaced automatically when you send a request with real values from the environment configured in the previous step.
![postman - tutorial - 7](/Assets/images/api/postman-tutorial/postman-tutorial-7.png) --- Modify the example data to suit your needs and send a request.
![postman - tutorial - 8](/Assets/images/api/postman-tutorial/postman-tutorial-8.png)
The fire.com API allows you to deeply integrate Business Account features into your application or back-office systems. The API provides read access to your profile, accounts and transactions, event-driven notifications of activity on the account and payment initiation via batches. Each feature has its own HTTP endpoint and every endpoint has its own permission. The API exposes 3 main areas of functionality: financial functions, service information and service configuration. ## Financial Functions These functions provide access to your account details, transactions, payee accounts, payment initiation etc. ## Service Functions These provide information about the fees and limits applied to your account. ## Service configuration These provide information about your service configs - applications, webhooks, API tokens, etc.
IOTVAS API enables you to discover IoT/Connected devices in the network and provides detailed real-time risk analysis, including firmware vulnerability analysis without requiring the user to upload the firmware file. Please visit the [signup page](https://iotvas-api.firmalyzer.com/portal/signup) to create an API key. IoTVAS API can be easily integrated with vulnerability scanning and network port scanner tools. For example, we have also released the [IOTVAS NSE script](https://github.com/firmalyzer/iotvas-nmap) that turns the nmap port scanner to a IoT/connected device discovery and real-time risk assessment tool. For more infromation on IoTVAS and other solutions please visit [Firmalyzer web site](https://www.firmalyzer.com).
The Flat API allows you to easily extend the abilities of the [Flat Platform](https://flat.io), with a wide range of use cases including the following: * Creating and importing new music scores using MusicXML, MIDI, Guitar Pro (GP3, GP4, GP5, GPX, GP), PowerTab, TuxGuitar and MuseScore files * Browsing, updating, copying, exporting the user's scores (for example in MP3, WAV or MIDI) * Managing educational resources with Flat for Education: creating & updating the organization accounts, the classes, rosters and assignments. The Flat API is built on HTTP. Our API is RESTful It has predictable resource URLs. It returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body. The [schema](/swagger.yaml) of this API follows the [OpenAPI Initiative (OAI) specification](https://www.openapis.org/), you can use and work with [compatible Swagger tools](http://swagger.io/open-source-integrations/). This API features Cross-Origin Resource Sharing (CORS) implemented in compliance with [W3C spec](https://www.w3.org/TR/cors/). You can use your favorite HTTP/REST library for your programming language to use Flat's API. This specification and reference is [available on Github](https://github.com/FlatIO/api-reference). Getting Started and learn more: * [API Overview and introduction](https://flat.io/developers/docs/api/) * [Authentication (Personal Access Tokens or OAuth2)](https://flat.io/developers/docs/api/authentication.html) * [SDKs](https://flat.io/developers/docs/api/sdks.html) * [Rate Limits](https://flat.io/developers/docs/api/rate-limits.html) * [Changelog](https://flat.io/developers/docs/api/changelog.html)