# Update existing link type.

`PUT /v1/link-types/{id}`

Used to update a single link type. All fields that are not submitted will be cleared (set to NULL). The model will tell you which fields are mandatory. You cannot update some of the system provided link types, indicated by the editable=false flag when you list it.


Authentication (security requirement alternatives):

```json
[
  {
    "firefly_iii_auth": []
  },
  {
    "local_bearer_auth": []
  }
]
```

- firefly_iii_auth: oauth2. OAuth2 authorization code flow. Create a client on your installation's `/profile` page; it authorizes at `/oauth/authorize` and issues tokens at `/oauth/token` there. The URLs below are the demo site's. [How to use the API](https://sourcey-firefly.pages.dev/how-to/firefly-iii/features/api/index.md) walks through it.
- local_bearer_auth: http (bearer). A Personal Access Token, sent as a bearer token. Create one on your installation under Options > Profile > OAuth > Personal Access Tokens.

Parameters:

- `X-Trace-Id` (header, string, uuid, optional) - Unique identifier associated with this request.
  Type: string, uuid
  
  Example:
  
  ```json
  "40c71bbb-c676-4f24-83cf-cc725d7d7a00"
  ```

- `id` (path, string, required) - The ID of the link type.
  Type: string
  
  Example:
  
  ```json
  "123"
  ```

Request body: application/json (required)

JSON array or form-data with updated link type information. See the model for the exact specifications.

Type: object

Schema: [LinkTypeUpdate](https://sourcey-firefly.pages.dev/api/models/linktypeupdate/index.md)

- `name` (optional)
  Type: string, string
  
  Example:
  
  ```json
  "Paid"
  ```

- `inward` (optional)
  Type: string, string
  
  Example:
  
  ```json
  "is (partially) paid for by"
  ```

- `outward` (optional)
  Type: string, string
  
  Example:
  
  ```json
  "(partially) pays for"
  ```

Request body: application/x-www-form-urlencoded (required)

JSON array or form-data with updated link type information. See the model for the exact specifications.

Type: object

Schema: [LinkTypeUpdate](https://sourcey-firefly.pages.dev/api/models/linktypeupdate/index.md)

- `name` (optional)
  Type: string, string
  
  Example:
  
  ```json
  "Paid"
  ```

- `inward` (optional)
  Type: string, string
  
  Example:
  
  ```json
  "is (partially) paid for by"
  ```

- `outward` (optional)
  Type: string, string
  
  Example:
  
  ```json
  "(partially) pays for"
  ```

Responses:

- 200: Updated link type stored, result in response

Content type: application/vnd.api+json

Type: object

Schema: [LinkTypeSingle](https://sourcey-firefly.pages.dev/api/models/linktypesingle/index.md)

- `data` (required)
  Reference: [LinkTypeRead](https://sourcey-firefly.pages.dev/api/models/linktyperead/index.md); Type: object

- 400: Bad request

Content type: application/json

Type: object

Schema: [BadRequestResponse](https://sourcey-firefly.pages.dev/api/models/badrequestresponse/index.md)

- `message` (optional)
  Type: string, string
  
  Example:
  
  ```json
  "Bad Request"
  ```

- `exception` (optional)
  Type: string, string
  
  Example:
  
  ```json
  "BadRequestHttpException"
  ```

- 401: Unauthenticated

Content type: application/json

Type: object

Schema: [UnauthenticatedResponse](https://sourcey-firefly.pages.dev/api/models/unauthenticatedresponse/index.md)

- `message` (optional)
  Type: string, string
  
  Example:
  
  ```json
  "Unauthenticated"
  ```

- `exception` (optional)
  Type: string, string
  
  Example:
  
  ```json
  "AuthenticationException"
  ```

- 404: Page not found

Content type: application/json

Type: object

Schema: [NotFoundResponse](https://sourcey-firefly.pages.dev/api/models/notfoundresponse/index.md)

- `message` (optional)
  Type: string, string
  
  Example:
  
  ```json
  "Resource not found"
  ```

- `exception` (optional)
  Type: string, string
  
  Example:
  
  ```json
  "NotFoundHttpException"
  ```

- 422: Validation error. The body will have the exact details.

Content type: application/json

Type: object

Schema: [ValidationErrorResponse](https://sourcey-firefly.pages.dev/api/models/validationerrorresponse/index.md)

- `message` (optional)
  Type: string, string
  
  Example:
  
  ```json
  "The given data was invalid."
  ```

- `errors` (optional)
  Type: object
  
  - `email` (optional)
    Type: array
    
    Items:
      Type: string, string
  
  - `force` (optional)
    Type: array
    
    Items:
      Type: string, string
  
  - `blocked` (optional)
    Type: array
    
    Items:
      Type: string, string
  
  - `field` (optional)
    Type: array
    
    Items:
      Type: string, string
  
  - `role` (optional)
    Type: array
    
    Items:
      Type: string, string
  
  - `blocked_code` (optional)
    Type: array
    
    Items:
      Type: string, string
  
  - `name` (optional)
    Type: array
    
    Items:
      Type: string, string
  
  - `type` (optional)
    Type: array
    
    Items:
      Type: string, string
  
  - `iban` (optional)
    Type: array
    
    Items:
      Type: string, string
  
  - `start` (optional)
    Type: array
    
    Items:
      Type: string, string
  
  - `end` (optional)
    Type: array
    
    Items:
      Type: string, string
  
  - `date` (optional)
    Type: array
    
    Items:
      Type: string, string

- 500: Internal exception

Content type: application/json

Type: object

Schema: [InternalExceptionResponse](https://sourcey-firefly.pages.dev/api/models/internalexceptionresponse/index.md)

- `message` (optional)
  Type: string, string
  
  Example:
  
  ```json
  "Internal Exception"
  ```

- `exception` (optional)
  Type: string, string
  
  Example:
  
  ```json
  "InternalException"
  ```

## Examples

### cURL

```bash
curl -X PUT 'https://firefly.example.com/api/v1/link-types/123' \
  -H 'X-Trace-Id: 40c71bbb-c676-4f24-83cf-cc725d7d7a00' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "name": "Paid",
  "inward": "is (partially) paid for by",
  "outward": "(partially) pays for"
}'
```

### JavaScript

```javascript
const body = `{
  "name": "Paid",
  "inward": "is (partially) paid for by",
  "outward": "(partially) pays for"
}`;

const response = await fetch('https://firefly.example.com/api/v1/link-types/123', {
  method: 'PUT',
  headers: {
    'X-Trace-Id': '40c71bbb-c676-4f24-83cf-cc725d7d7a00',
    'Authorization': 'Bearer YOUR_TOKEN',
    'Content-Type': 'application/json',
  },
  body,
});

const data = await response.text();
```

### Python

```python
import requests

body = '''{
  "name": "Paid",
  "inward": "is (partially) paid for by",
  "outward": "(partially) pays for"
}'''

response = requests.put(
    'https://firefly.example.com/api/v1/link-types/123',
    data=body.encode('utf-8'),
    headers={
        'X-Trace-Id': '40c71bbb-c676-4f24-83cf-cc725d7d7a00',
        'Authorization': 'Bearer YOUR_TOKEN',
        'Content-Type': 'application/json',
    },
)
print(response.text)
```
