# Organizaciones | Docs de AudioDN

> Endpoints de la API para recuperar y actualizar la configuración de tu organización AudioDN, branding, webhooks y configuración.

Source: https://audiodeliverynetwork.com/es/docs/api/organizations/

---

# Organizaciones

Las organizaciones son entidades de nivel superior que contienen colecciones y pistas. Gestiona la configuración de la organización, temas y configuraciones del player.

Las respuestas incluyen dos compañeros de solo lectura de `player_color`: `player_color_light` (ajustado para permanecer legible sobre un fondo claro) y `player_color_dark` (ajustado para un fondo oscuro). Se derivan de `player_color` desplazando el brillo hasta que cada uno cumple un contraste mínimo, y no se pueden establecer directamente.

#### webhook\_url es de solo lectura aquí

El campo `webhook_url` se devuelve como referencia pero se configura en el panel **Settings → Webhook**, no a través de esta API. Consulta la documentación del [webhook Track Processing](/docs/webhooks/track-processing) para el payload y el comportamiento.

GET `/v1/organization/:organization_id`

Devuelve detalles de una organización concreta

#### Parámetros

| Nombre | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `organization_id` | uuid | Obligatorio | El ID de la organización a recuperar (parámetro de ruta) |

#### Ejemplo de solicitud

    

```
curl -X GET "https://api.audiodelivery.net/v1/organization/ORG_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

```
const response = await fetch('https://api.audiodelivery.net/v1/organization/ORG_ID', {
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
  }
});

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

```
import Foundation

func performRequest() async throws {
    var request = URLRequest(url: URL(string: "https://api.audiodelivery.net/v1/organization/ORG_ID")!)
    request.httpMethod = "GET"
    request.setValue("Bearer YOUR_API_KEY", forHTTPHeaderField: "Authorization")
    let (data, _) = try await URLSession.shared.data(for: request)
    let json = try JSONSerialization.jsonObject(with: data) as! [String: Any]
    // use json
}
```

```
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import okhttp3.*

val client = OkHttpClient()

suspend fun performRequest(): String = withContext(Dispatchers.IO) {
    val request = Request.Builder()
        .url("https://api.audiodelivery.net/v1/organization/ORG_ID")
        .addHeader("Authorization", "Bearer YOUR_API_KEY")
        .build()
    val response = client.newCall(request).execute()
    response.body?.string() ?: error("Empty response body")
}
```

```
import 'dart:convert';
import 'package:http/http.dart' as http;

Future<Map<String, dynamic>> performRequest() async {
  final response = await http.get(
    Uri.parse("https://api.audiodelivery.net/v1/organization/ORG_ID"),
    headers: {
      "Authorization": "Bearer YOUR_API_KEY",
    },
  );
  if (response.statusCode < 200 || response.statusCode >= 300) {
    throw Exception('Request failed: ${response.statusCode}');
  }
  return jsonDecode(response.body) as Map<String, dynamic>;
}
```

#### Respuesta

```
{
"ok": true,
"api_request_id": "uuid",
"organization_id": "uuid",
"organization": {
  "id": "uuid",
  "name": "string",
  "theme": [],
  "is_theme_overridable": true,
  "is_cover_overridable": true,
  "player_color": "string",
  "player_color_light": "string | null",
  "player_color_dark": "string | null",
  "player_subtitle": "string",
  "webhook_url": "string | null"
}
}
```

PUT `/v1/organization/:organization_id`

Actualiza una organización existente

#### Parámetros

| Nombre | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `organization_id` | uuid | Obligatorio | El ID de la organización a actualizar (parámetro de ruta) |
| `name` | string | Opcional | Nombre de la organización |
| `theme` | array of objects | Opcional | Colores extraídos de las imágenes de portada. Array de objetos de color con valores hex, area, lightness, saturation |
| `is_theme_overridable` | boolean | Opcional | Si los colores de imagen de la organización se pueden sobrescribir |
| `is_cover_overridable` | boolean | Opcional | Si la portada de la organización se puede sobrescribir |
| `player_color` | string | Opcional | Color del player de la organización (color hex) |
| `player_subtitle` | string | Opcional | Subtítulo del player de la organización |

#### Ejemplo de solicitud

    

```
curl -X PUT "https://api.audiodelivery.net/v1/organization/ORG_ID" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "My Organization",
  "player_color": "#FF0000"
}'
```

```
const payload = {
  "name": "My Organization",
  "player_color": "#FF0000"
};

const response = await fetch('https://api.audiodelivery.net/v1/organization/ORG_ID', {
  method: 'PUT',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(payload)
});

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

```
import Foundation

func performRequest() async throws {
    var request = URLRequest(url: URL(string: "https://api.audiodelivery.net/v1/organization/ORG_ID")!)
    request.httpMethod = "PUT"
    request.setValue("Bearer YOUR_API_KEY", forHTTPHeaderField: "Authorization")
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    let bodyJSON = """
{
  "name": "My Organization",
  "player_color": "#FF0000"
}
"""
    request.httpBody = bodyJSON.data(using: .utf8)
    let (data, _) = try await URLSession.shared.data(for: request)
    let json = try JSONSerialization.jsonObject(with: data) as! [String: Any]
    // use json
}
```

```
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import okhttp3.*
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.RequestBody.Companion.toRequestBody

val client = OkHttpClient()

suspend fun performRequest(): String = withContext(Dispatchers.IO) {
    val body = """{
  "name": "My Organization",
  "player_color": "#FF0000"
}""".toRequestBody("application/json".toMediaType())
    val request = Request.Builder()
        .url("https://api.audiodelivery.net/v1/organization/ORG_ID")
        .put(body)
        .addHeader("Authorization", "Bearer YOUR_API_KEY")
        .addHeader("Content-Type", "application/json")
        .build()
    val response = client.newCall(request).execute()
    response.body?.string() ?: error("Empty response body")
}
```

```
import 'dart:convert';
import 'package:http/http.dart' as http;

Future<Map<String, dynamic>> performRequest() async {
  final response = await http.put(
    Uri.parse("https://api.audiodelivery.net/v1/organization/ORG_ID"),
    headers: {
      "Authorization": "Bearer YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: jsonEncode({
  "name": "My Organization",
  "player_color": "#FF0000"
}),
  );
  if (response.statusCode < 200 || response.statusCode >= 300) {
    throw Exception('Request failed: ${response.statusCode}');
  }
  return jsonDecode(response.body) as Map<String, dynamic>;
}
```

#### Respuesta

```
{
"ok": true,
"api_request_id": "uuid",
"organization_id": "uuid",
"organization": {
  "id": "uuid",
  "name": "string",
  "theme": [],
  "is_theme_overridable": true,
  "is_cover_overridable": true,
  "player_color": "string",
  "player_color_light": "string | null",
  "player_color_dark": "string | null",
  "player_subtitle": "string",
  "webhook_url": "string | null"
}
}
```
