API AGI’LOG (version 1.0.0)

Download OpenAPI specification:

This API is dedicated to Air France to retrieve information on request and end to end request.

Authentication

JWT Token validation

API endpoints are using Bearer authentication (bearerAuth).
So all API request calls must include a valid JWT token in the Authorization HTTP header, which is issued by Air France.

Token validation involves claim validation and certificate verification from a JWKS endpoint provided by Air France.
The URL depends on the environment and the value of the iss field in JWT payload.

When the token is invalid, a 401 error code is returned.
Here is the list of errors message according to the type of issue:

Error message Description
Issuer of the token invalid The claim iss is not present in the JWT claim issuers list
Audience of the token invalid The claim aud is not present in the JWT claim audiences list
Token has expired The claim exp exceeds the current date
Token invalid Token verification failed

General instruction

Filtering

Access to paginated resources accept filtering with query parameters. Example : route_to_my_paginated_resources?myFilter1=myValue1&myFilter2=myValue2.

When a query parameter is a collection, the values must be delimited with a comma. To escape a comma in a value, double it. Example to pass list of id : "id1", "id2" to "_ids" parameter : route_to_my_paginated_resources?_ids=id1,id2.

Pagination

For paginated resources, provide query option's startIndex, count, fields, sort for ascending ordering and desc for descending ordering.
Example : route_to_my_paginated_resources?startIndex=0&count=10&fields=field1,field2&sort=field2
Example of response :

{
   "data": [
   {
       "field1": "My field 1 value 1",
       "field2": "My field 2 value 1"
   },
   {
       "field1": "My field 1 value 2",
       "field2": "My field 2 value 2"
   }
   ],
   "paging": {
   "pageCount": 1,
   "totalItemCount": 2,
   "pageNumber": 1,
   "pageSize": 10,
   "hasPreviousPage": false,
   "hasNextPage": false,
   "isFirstPage": true,
   "isLastPage": true
}
}

Error

In case of errors, an object Problem Details is returned with its http status code. It corresponds to the standard problem details, with an additional property data. See more details about http list error here.
You can find below common used error response.

Code Signification comment
200 Success Body response contains the returned information..
400 Bad Request The provided elements, URL parameters, or request body information are incorrect (missing or invalid, whether in format or value). Functional error messages are found in the response message
401 Authentication Failed The provided credentials do not allow authentication, or the authentication token has expired
403 Forbidden The call is authenticated, but the concerned identity is not authorized to access the resource
404 Not Found The server cannot find the requested endpoint
429 Too Many Requests Quota is exceeded. Wait before making a new request. (at least of 1 second to return one capacity of 10 requests)
429 Too Many Requests Another request is still in progress. As the application cannot handle a parallel request, you must wait before making a new one.
500 Internal Server Error An error occurred on the server side. Contact support for a status update.

Date format

All dates in the system are UTC date using ISO 8601 format Year-month-dayThour:minute:second.millisecons+00:00

Example : 2023-10-30T07:24:00.000+00:00

Versioning

This API is versioned to handle changes in API contract. The versioning is done with URI path. Example : https://myapi/v1/myresource. The versioning applies on all the operations except /token and /revoke endpoints. Example: https://myapi/token.

A new version is released when a breaking change is made. The previous versions remain maintained for a certain time. After a time, old versions may be deprecated (marked as obsolete) then removed. Remark: breaking changes can be made on pre-release versions. These versions can also be removed from the API and replaced with a release version.

Examples of breaking changes :

  • Change a property name or type in a request or response

  • Add a required parameter in a request

  • Remove a property in a response

  • Remove an operation in the API

Examples of non-breaking changes :

  • Add a value in a response

  • Add an optional parameter in a request

  • Add an operation in the API

  • Change the format of any opaque identifier

  • Replacing a success status code with another success status code (i.e: replacing a 200 with a 201)

  • Replacing a failure status code with another failure status code (i.e: replacing a 500 with a 400)

Rate-Limiting

This API uses consumption quotas to prevent excessive calls and to maintain service availability.

Two types of rate limiting are applied :

  • leaky bucket
  • concurrency

When a quota is exceeded, the API returns the error code 429 (Too Many Requests).

Leaky bucket rate limiting

A leaky bucket rate limiting is applied, it depends on two parameters :

  • Bucket size: It defines the capacity of the bucket. Value: 100.
  • Bucket Leak Rate Per Second: It defines how much the contents of the bucket decrease per second. Value: 10.

When a request is received :

  • If the bucket is not full, the bucket counter is increased.
  • If the bucket is full (the bucket counter reaches the bucket size), the request is rejected. In this case, the API client must wait before sending a new request.

The bucket counter is decreased periodically to accept new requests.

Concurrency rate limiting

There is no specific limit for the number of concurrent calls, however you are limited by the remaining bucket capacity

Request

Get a paginated list of requests

Authorizations:
bearerAuth
query Parameters
_ids
string

List of request _id, separated by a comma

dateFrom
required
string

The inclusive start date and time for the search

dateTo
string <date-time>

The exclusive end date and time for the search.
The date interval must not exceed 48 hours.

startIndex
integer
Default: 0

Pagination start index (offset).

count
integer <= 200
Default: 10

Pagination count (page size).

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "paging": {
    }
}

End to End

Get a paginated list of end-to-ends

Authorizations:
bearerAuth
query Parameters
_ids
string

List of request _id, separated by a comma

dateFrom
required
string

The inclusive start date and time for the search

dateTo
string <date-time>

The exclusive end date and time for the search.
The date interval must not exceed 48 hours.

startIndex
integer
Default: 0

Pagination start index (offset).

count
integer <= 200
Default: 10

Pagination count (page size).

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "paging": {
    }
}