Permalink
Browse files

Merge pull request #1545 from concur/preview

Preview -> Livesite 2018-09-13
  • Loading branch information...
charlieconcur committed Sep 13, 2018
2 parents 63a3729 + 2564d80 commit 9ec5fcbd7184fd19c6ad2d3ba499646ede6136ff
View
@@ -1,46 +1,35 @@
developer.concur.com
====================
[View Availability](https://stats.uptimerobot.com/P7BJ7ToVO)
# SAP Concur Developer Center (Source)
## The Concur Developer Website
This repo contains the documentation, tools and support content for the Concur API developer audience. This includes both internal and external developers.
**A goal in open sourcing the docs repository is to give our developer community - both internal and external - the opportunity to have changes fixed more quickly by editing a problem document in the GitHub UI and "save" it, which will create a pull request.**
Changes committed to the `preview` branch can be found here: [http://preview.developer.concur.com/](http://preview.developer.concur.com/)
Changes committed to the `livesite` branch can be found here: [developer.concur.com](https://developer.concur.com/)
Changes merged to the `preview` branch can be found here: [http://preview.developer.concur.com/](http://preview.developer.concur.com/)
### Existing Concur Partners
If you are an existing Concur partner and require support assistance, please open a partner support case [here.](https://na4.salesforce.com/secur/login_portal.jsp?orgId=00D600000007Dq3&portalId=06060000000PrEi)
Changes merged to the `livesite` branch can be found here: [developer.concur.com](https://developer.concur.com/)
---
## Sitemap
The Concur Developer Website is organized into three main sections:
# Sitemap
* [API documentation](#api)
* [App management](#app)
* [Tools and support](#tools)
The Concur Developer Website found within the `/src` folder is organized into these areas:
### <a name="api"></a>API Documentation
* `api-reference` contains all documentation markdown files the latest APIs versions.
* `api-reference-deprecated` contains all documentation markdown files for deprecated API versions.
```
_data Sidebars for navigation and various other YML files for the site.
_includes Base HTML for the site combined with Markdown at build time.
_layouts Specific HTML for the various types of resources, referenced with Jekyll front matter, combined with Markdown at build time.
_plugins Various Jekyll plugins used at build time.
_sass CSS styling for the site.
api-explorer OpenAPI documentation (aka 'Swagger') for some of the API endpoints.
api-guides Partner enablement resources showing how to combine various APIs for end-to-end solutions.
api-reference Specific API endpoint documentation.
assets Various site wide images.
manage-apps SAP Concur App Center partner marketing materials.
swagger-ui Supporting files for /api-explorer
tools-support Support resources for developers including release notes.
```
# Availability
### <a name="app"></a>App Management
`manage-apps` contains all html and markdown files for all app management functions:
* `go-to-market.html` is the page that contains links to all documents required to deploy an app to end users
* `app-certification.markdown` provides information on the app certification process
* `partner-applications.markdown` provides information on registering and managing apps
* `go-market-docs` contains all the downloadable documents for app deployment
[View Availability](https://stats.uptimerobot.com/P7BJ7ToVO)
### <a name="tools"></a>Tools & Support
`tools-support` contains all markdown files for tools and support:
# Support
* `tools` provides information and links to app development tools
* `support` provides information and links to support tools
* `release-notes` contains all release notes docs
* `reference` contains all markdown files for reference materials
If you are an existing Concur partner and require support assistance, please open a partner support case [here](https://na4.salesforce.com/secur/login_portal.jsp?orgId=00D600000007Dq3&portalId=06060000000PrEi).
@@ -16,7 +16,7 @@ The links and diagram below illustrate the process to get a company-level Access
Development Item|Resources
---|---
Authorization|[Authentication - Enterprise Business Applications](/api-reference/authentication/apidoc.markdown#enterprise-business-applications)
Authorization|[Authentication - Enterprise Business Applications](/api-reference/authentication/apidoc.html#enterprise-business-applications)
Development & Certification|[Enterprise App Development & Certification](https://prezi.com/p/lw0qqy51zcmd/)
Landing Page|To develop the **Landing Page** read the [Apps for My Business](/manage-apps/go-market-docs/app-center-ux-guidelines-enterprise.html) and / or [Apps for Me](/manage-apps/go-market-docs/app-center-ux-guidelines-consumer.html) User Experience Guidelines to learn more about certification. The Certification PM will provide you a checklist that will be adhered to during the Certification walkthrough call.
ERP applications (only)|ERP Partner Integrations - the Partner will need to develop a solution that facilitates a way for the customer / partner to refresh the OAuth2 Access Token when the customer uses an on-premise ERP system.
@@ -7,6 +7,7 @@ layout: reference
* [Overview](#overview)
* [Prerequisites](#prerequisites)
* [Service Details](#serviceDetails)
* [Regional Availability](#regionalAvailability)
* [Schema](#schema)
* [Client](#client)
@@ -32,6 +33,22 @@ This API supports POST only.
3. Read the [Getting Started](/api-reference/authentication/getting-started.html) section of [Authentication API](/api-reference/authentication/apidoc.html).
This API supports [Client Credentials Grant](/api-reference/authentication/apidoc.html#client_credentials) only. Your sandbox will be configured to accept posts from your application.
## Service Details
The service is a POST call adhering to the following steps:
* Vendor onboarding has been completed prior to invoking the API. All the authentication and authorization credentials have been set up at this point.
* Third party vendors invoke the User Location API using the client credentials (JWT)
* Since the new service is registered with API gateway, the call is intercepted by the API Gateway and basic authentication and authorization for the given client credentials (JWT) is done
* If the checks fail, then the appropriate error response is returned to the caller.
* If the checks pass, then the request is forwarded to the load balancer which routes the request to the appropriate node for processing
* The selected node processes the request which is in JSON format. Validations are performed the data conversion takes place. If any of the validations fail, then the appropriate error response is returned to the client (HTTP 400 Bad Request / HTTP 403 Unauthorized)
* If the validations pass, then the request is processed, and the data is persisted to the backend (DB) in the following ways:
* Direct persistence
* Persistence via queues
* If the persistence is successful, then an HTTP 200 OK is returned to the caller
* If there are any issues with the persistence, then the appropriate codes are returned to the caller (HTTP 500 Application exception)
* Note that the error messages are intentionally ambiguous to prevent exploitation
## Regional Availability
```
@@ -70,7 +87,7 @@ secondSubLevel|36|String|This is the sub level of the child corporation (firstsu
### Users
This information will be used to match or create a new user. Either login ID or email address must be provided. If an existing user is not found for the login ID or email, one will be created.
This information will be used to match or create a new user. Either login ID or email address must be provided. If an existing user is not found for the login ID or email, one will be created. The mobile field must unique for a particular user i.e it must not be shared between different users. If mobile number is not provided then the email will be used to create or update the user.
Property Name|Values/Length|Type|Description
---|---|---|---
@@ -79,7 +96,7 @@ firstName|100|String|-
lastName|100|String|-
email|255|String|Either email or concurLoginId must be provided
employeeId|19|String|-
mobileCountryCode|3|String|-
mobileCountryCode|3|String|ISO Alpha-2 code. As a reference the full set can be found at [Country Codes](http://www.mcc-mnc.com/)
mobile|10|String|-
optedIn|'True' / 'False'|String|-
concurLoginId|128|String|Either email or concurLoginId must be provided.
@@ -155,6 +172,15 @@ error codes.
## Example
### Mobile and Mobile Country Code valid combinations
Example with Country code for South Africa (Country Code:ZA)
Country Code|Mobile Number
---|---
Empty|7160986233
US|2125553423
ZA|716098992
### Request
```shell
@@ -168,52 +194,199 @@ Authorization: Bearer {token}
{
"userLocations": [
{
"client": {
"id": "CTG",
"firstSubLevel": "Test_SL1_Demo",
"secondSubLevel": "Test_SL2_Demo"
"locations": [
{
"locationId": 1,
"locationName": "Reunion",
"timezoneId": "",
"startDate": "2019-08-23T12:00:00",
"visitorId": [
1596
],
"locationDescription": "",
"locationIataCode": "",
"locationLongitude": 55.536384,
"locationLatitude": -21.115141,
"locationPhone": "",
"locationAddress": "",
"endDate": "2019-08-25T11:59:00"
}
],
"sourcePartner": {
"description": "The Leader in Travel, Study Abroad and International Student Management Solutions.",
"id": "TD",
"name": "Terra Dotta"
},
"transaction": {
"transactionId": "AWQ1WB7pQAn-v2Nzwu65_AWQ1WXPvQAn-v2Nzwu66",
"createdDate": "2019-08-03T14:46:24",
"transactionType": "Add"
},
"users": [
{
"userId": 0,
"firstName": "Test",
"lastName": "User",
"email": "clientOneXML@tuser.com",
"employeeId": "Cli123",
"mobileCountryCode": "string",
"mobile": "442345623456",
"employeeId": "",
"lastName": "Yaima",
"concurLoginId": "",
"optedIn": true,
"userId": 1596,
"affiliation": "",
"firstName": "Arnold",
"mobileCountryCode": "",
"email": "yaima@aktiun.com",
"mobile": "+593984273029"
}
],
"client": {
"secondSubLevel": "",
"firstSubLevel": "",
"id": "UL_CLI"
}
},
{
"locations": [
{
"locationId": 2,
"locationName": "Seville Spain",
"timezoneId": "",
"startDate": "2019-08-23T12:00:00",
"visitorId": [
1932
],
"locationDescription": "",
"locationIataCode": "",
"locationLongitude": -5.9844589,
"locationLatitude": 37.3890924,
"locationPhone": "",
"locationAddress": "",
"endDate": "2019-08-31T11:59:00"
}
],
"sourcePartner": {
"description": "The Leader in Travel, Study Abroad and International Student Management Solutions.",
"id": "TD",
"name": "Terra Dotta"
},
"transaction": {
"transactionId": "AWNBBsCkQAn-v2NzwrIl_AWNBC-ugQAn-v2NzwrIz",
"createdDate": "2019-08-03T14:46:24",
"transactionType": "Add"
},
"users": [
{
"employeeId": "",
"lastName": "Bending",
"concurLoginId": "",
"affiliation": "Student"
"optedIn": true,
"userId": 1932,
"affiliation": "",
"firstName": "Bender1",
"mobileCountryCode": "US",
"email": "pedro@aktiun.com",
"mobile": "9196085936"
}
],
"client": {
"secondSubLevel": "",
"firstSubLevel": "",
"id": "UL_CLI"
}
},
{
"locations": [
{
"locationId": 0,
"locationAddress": "Off Fox Street, Landstown AZ 45456",
"locationName": "Youth Hostel",
"locationDescription": "Travel Stuff",
"locationLatitude": "57.2019",
"locationLongitude": "-3.19778",
"locationId": 1,
"locationName": "Reunion",
"timezoneId": "",
"startDate": "2019-08-23T12:00:00",
"visitorId": [
1805
],
"locationDescription": "",
"locationIataCode": "",
"startDate": "2017-11-02T12:07",
"endDate": "2017-11-02T12:07",
"timezoneId": "Europe/London",
"locationPhone": "string",
"locationLongitude": 55.536384,
"locationLatitude": -21.115141,
"locationPhone": "",
"locationAddress": "",
"endDate": "2019-08-25T11:59:00"
}
],
"sourcePartner": {
"description": "The Leader in Travel, Study Abroad and International Student Management Solutions.",
"id": "TD",
"name": "Terra Dotta"
},
"transaction": {
"transactionId": "AWQ1gANVQAn-v2Nzwu8D_AWQ1gANcQAn-v2Nzwu8E",
"createdDate": "2019-08-03T14:46:24",
"transactionType": "Add"
},
"users": [
{
"employeeId": "",
"lastName": "Martinez",
"concurLoginId": "",
"optedIn": true,
"userId": 1805,
"affiliation": "",
"firstName": "Pedro",
"mobileCountryCode": "",
"email": "pedro@aktiun.com",
"mobile": "+593996016829"
}
],
"client": {
"secondSubLevel": "",
"firstSubLevel": "",
"id": "UL_CLI"
}
},
{
"locations": [
{
"locationId": 3,
"locationName": "Poland",
"timezoneId": "",
"startDate": "2019-08-20T12:00:00",
"visitorId": [
0
]
1596
],
"locationDescription": "",
"locationIataCode": "",
"locationLongitude": 19.145136,
"locationLatitude": 51.919438,
"locationPhone": "",
"locationAddress": "",
"endDate": "2019-08-22T11:59:00"
}
],
"sourcePartner": {
"description": "The Leader in Travel, Study Abroad and International Student Management Solutions.",
"id": "TD",
"name": "Terra Dotta",
"description": "Universities stuff"
"name": "Terra Dotta"
},
"transaction": {
"transactionId": "Nui-API",
"createdDate": "2017-11-02T12:05",
"transactionId": "AWS4e-N1QAn-v2NzwxEu_AWS4e-0PQAn-v2NzwxEv",
"createdDate": "2019-08-03T14:46:24",
"transactionType": "Add"
},
"users": [
{
"employeeId": "",
"lastName": "Yaima",
"concurLoginId": "",
"optedIn": true,
"userId": 1596,
"affiliation": "",
"firstName": "Arnold",
"mobileCountryCode": "",
"email": "yaima@aktiun.com",
"mobile": "+593984273029"
}
],
"client": {
"secondSubLevel": "",
"firstSubLevel": "",
"id": "UL_CLI"
}
}
]
@@ -231,6 +404,11 @@ content-type: application/json
```json
{
"messageText": "OK"
}
"processedTransactions": {
"Nui-API" : "Successfully Processed"
},
"unprocessedTransactions": {
"AWS4e-N1QaN-swer-456": "Transaction type not found"
}
}
```
Oops, something went wrong.

0 comments on commit 9ec5fcb

Please sign in to comment.