## Documentation Index

Fetch the complete documentation index at: [/llms.txt](https://docs.gable.ai/llms.txt)

Use this file to discover all available pages before exploring further.

GET

/
v0
/data-asset
{id}
/infer-contract

Try it

Infer a contract from a data asset

cURL

```bash
curl --request GET \
  --url https://demo-api.gable.ai/v0/data-asset/{id}/infer-contract \
  --header 'X-API-KEY: <api-key>'
```

```python
import requests

url = "https://demo-api.gable.ai/v0/data-asset/{id}/infer-contract"

headers = {"X-API-KEY": "<api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
```

```javascript
const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};

fetch('https://demo-api.gable.ai/v0/data-asset/{id}/infer-contract', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
```

```php
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://demo-api.gable.ai/v0/data-asset/{id}/infer-contract",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
    "X-API-KEY: <api-key>"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

url := "https://demo-api.gable.ai/v0/data-asset/{id}/infer-contract"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("X-API-KEY", "<api-key>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))
}
```

```java
HttpResponse<String> response = Unirest.get("https://demo-api.gable.ai/v0/data-asset/{id}/infer-contract")
  .header("X-API-KEY", "<api-key>")
  .asString();
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://demo-api.gable.ai/v0/data-asset/{id}/infer-contract")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'

response = http.request(request)
puts response.read_body
```

200

400

500

```json
{
  "contractId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "contractSpec": {
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "doc": "<string>",
    "name": "<string>",
    "namespace": "<string>",
    "owner": "jsmith@example.com",
    "schema": [
      {
        "type": "struct",
        "name": "<string>",
        "fields": [
          {
            "type": "struct",
            "name": "<string>",
            "fields": "<array>",
            "alias": "<string>",
            "doc": "<string>",
            "logical": "<string>",
            "optional": true
          }
        ],
        "alias": "<string>",
        "doc": "<string>",
        "logical": "<string>",
        "optional": true,
        "constraints": {}
      }
    ],
    "dataAssetResourceName": "<string>",
    "dataAssetResourceNameList": [
      "<string>"
    ],
    "restrictPii": true
  },
  "contractSpecRaw": "<string>",
  "version": "<string>",
  "gitHash": "<string>",
  "gitRepo": "<string>",
  "gitUser": "<string>",
  "fileUri": "<string>",
  "reviewers": [
    "<string>"
  ],
  "mergedAt": "2023-11-07T05:31:56Z",
  "createdAt": "2023-11-07T05:31:56Z",
  "updatedAt": "2023-11-07T05:31:56Z"
}
```

```json
{
  "message": "<string>",
  "id": 123,
  "title": "<string>"
}
```

```json
{
  "message": "<string>",
  "id": 123,
  "title": "<string>"
}
```

#### Authorizations

X-API-KEY

string

header

required

#### Path Parameters

id

string<uuid>

required

UUID of the data asset

#### Response

200

application/json

Contract was successfully inferred from the given data asset

contractId

string<uuid>

required

Unique identifier for the contract in UUID format

contractSpec

object

required

contract spec

contractSpecRaw

string

required

contract spec raw json

version

string

Version of the contract (semantic versioning)

status

enum<string>

status of the contract

Available options:

`ACTIVE`,

`DEPRECATED`

gitHash

string

full length git hash corresponding to the commit this contract was added/updated

Required string length: `40`

gitRepo

string<uri>

full link to the git repo this contract lives in

gitUser

string

git user who added/updated this contract

fileUri

string<uri>

full link to the file in the repo that contains this contract

reviewers

string[]

optional list of users who reviewed the merged PR that this contract added/updated in

mergedAt

string<date-time>

date time at which the PR that added/updated this contract was merged

createdAt

string<date-time>

date time at which the contract was created

updatedAt

string<date-time>

date time at which the contract was last updated
