> For a complete page index, fetch https://developer.close.com/llms.txt

# Associate a Shared Custom Field with an object type

POST https://api.close.com/api/v1/custom_field/shared/{scf_id}/association/
Content-Type: application/json

Associates a Shared Custom Field with an object type such as Lead, Contact, or Custom Activity Type. Once associated, the Shared Custom Field can be set on objects of that type.

This endpoint accepts the following attributes:

- `object_type` – can be one of: `lead`, `contact`, `opportunity`, `custom_activity_type`,
  `custom_object_type`.
- `custom_activity_type_id` – ID of the Custom Activity Type that you want to
  associate this Shared Field with. Only relevant if you chose the `object_type` of `custom_activity_type`.
- `custom_object_type_id` – ID of the Custom Object Type that you want to
  associate this Shared Field with. Only relevant if you chose the `object_type` of `custom_object_type`.
- `editable_with_roles` – list of [Roles](https://developer.close.com/api/resources/roles) that can edit the values of
  this Field on the given object. Note that this is a per-association setting, meaning that editing of the Shared Custom Field can be restricted on one object and not restricted on another.
- `required` – whether a value *must* be provided for this Field on the given
  object. Only relevant if you chose the `object_type` of `custom_activity_type` or `custom_object_type`. Note that this is a per-association setting, meaning that this Shared Custom Field can be required on one object and not required on another.

Reference: https://developer.close.com/api/resources/custom-fields/custom-fields-shared/create-association

## Authentication

- `Authorization` header (basic auth, required) — Use your API key as the username and leave the password empty.
- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Path parameters

- `scf_id` (string, required)

### Body (application/json)

This endpoint expects an any.

- `any`

## Response

### 201

Successful response

## Errors

### 400 Bad Request Error

Bad request

- `any`

### 401 Unauthorized Error

Unauthorized

- `any`

### 404 Not Found Error

Not found

- `any`

## Examples

**Request**

```json
{
  "editable_with_roles": [],
  "object_type": "lead",
  "required": false
}
```

**Response**

```json
{
  "editable_with_roles": [],
  "object_type": "lead",
  "required": false
}
```

**SDK Code**

```python
import requests

url = "https://api.close.com/api/v1/custom_field/shared/:scf_id/association/"

payload = {
    "editable_with_roles": [],
    "object_type": "lead",
    "required": False
}
headers = {
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers, auth=("<CLOSE_API_KEY>", ""))

print(response.json())
```

```javascript
const url = 'https://api.close.com/api/v1/custom_field/shared/:scf_id/association/';
const credentials = btoa("<CLOSE_API_KEY>:");

const options = {
  method: 'POST',
  headers: {Authorization: `Basic ${credentials}`, 'Content-Type': 'application/json'},
  body: '{"editable_with_roles":[],"object_type":"lead","required":false}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

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

func main() {

	url := "https://api.close.com/api/v1/custom_field/shared/:scf_id/association/"

	payload := strings.NewReader("{\n  \"editable_with_roles\": [],\n  \"object_type\": \"lead\",\n  \"required\": false\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.SetBasicAuth("<CLOSE_API_KEY>", "")
	req.Header.Add("Content-Type", "application/json")

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

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

	fmt.Println(res)
	fmt.Println(string(body))

}
```

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

url = URI("https://api.close.com/api/v1/custom_field/shared/:scf_id/association/")

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

request = Net::HTTP::Post.new(url)
request.basic_auth("<CLOSE_API_KEY>", "")
request["Content-Type"] = 'application/json'
request.body = "{\n  \"editable_with_roles\": [],\n  \"object_type\": \"lead\",\n  \"required\": false\n}"

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

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.close.com/api/v1/custom_field/shared/:scf_id/association/")
  .basicAuth("<CLOSE_API_KEY>", "")
  .header("Content-Type", "application/json")
  .body("{\n  \"editable_with_roles\": [],\n  \"object_type\": \"lead\",\n  \"required\": false\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.close.com/api/v1/custom_field/shared/:scf_id/association/', [
  'body' => '{
  "editable_with_roles": [],
  "object_type": "lead",
  "required": false
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
    'auth' => ['<CLOSE_API_KEY>', ''],
]);

echo $response->getBody();
```

```csharp
using RestSharp;
using RestSharp.Authenticators;

var client = new RestClient("https://api.close.com/api/v1/custom_field/shared/:scf_id/association/");
client.Authenticator = new HttpBasicAuthenticator("<CLOSE_API_KEY>", "");
var request = new RestRequest(Method.POST);

request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"editable_with_roles\": [],\n  \"object_type\": \"lead\",\n  \"required\": false\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```