# Example calls

You'll receive a service account assigned to a specific customer code within the IDP system. Each service account includes a client-id and a client-secret.

### Example data

* **client-id**: `c1-service-account`
* **client-secret**: `Ri3vRcwyaFVZ3Vv4hP6WgbyKiBtpLHNy`


First, use this information to obtain an access token. Then, use the access token as a bearer token to access the three available endpoints.

### Workflow

1. Call the ingestion endpoint.
2. Continuously poll the status endpoint until the process is either **EXPORTED** or **REJECTED**.


* If the status is **REJECTED**, stop polling.
* If the status is **EXPORTED**, proceed to the next step.


1. Verify that the result exists so you can retrieve the processing outcome.


### Sample API calls

1. Obtain an access token:



```
export customer_realm_access_token=$(curl --request POST \
  --url "https://sso.idp.de.retarus.com/auth/realms/c-${CUSTOMER_REALM}/protocol/openid-connect/token" \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=client_credentials \
  --data client_id=${CLIENT_ID} \
  --data client_secret=${CLIENT_SECRET} \
  --data scope=openid | jq '.access_token' | tr -d '"') && echo $customer_realm_access_token

export access_token=$(curl --location 'https://sso.idp.de.retarus.com/auth/realms/idp/protocol/openid-connect/token' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange' \
  --data-urlencode 'requested_token_type=urn:ietf:params:oauth:token-type:access_token' \
  --data-urlencode 'client_id=idp-token-issuer-client' \
  --data-urlencode "subject_token=$customer_realm_access_token" \
  --data-urlencode "subject_issuer=c-${CUSTOMER_REALM}" \
  --data-urlencode 'audience=idp-token-issuer-client' | jq '.access_token' | tr -d '"') && echo $access_token

curl -v -O -H "Authorization: Bearer $access_token" https://integration.idp.de2.retarus.com/v3/api-docs
```

1. Initiate the ingestion process:



```
processId=$(curl -X POST -H "ai-pipeline-code: INVOICE" \
-H "Content-Type: multipart/form-data" \
-F "file=@etc/Rechnung_400021891618.pdf" \
-H "Authorization: Bearer $access_token" \
https://integration.idp.de2.retarus.com/upload-pdf | jq '.processId'|tr -d '"') && echo $processId
```

1. Chec that the result exists:



```
curl -X GET -H "Authorization: Bearer $access_token" \
"https://integration.idp.de2.retarus.com/get-xml-result/${processId}"
```

1. Poll the process status:



```
curl -X GET -H "Authorization: Bearer $access_token" \
https://integration.idp.de2.retarus.com/get-status?processId="${processId}"
```