{
  "openapi": "3.0.1",
  "info": {
    "title": "MLC Rights Resolver: ISRC to ISWC, Writers, Publisher Shares",
    "description": "Resolve a list of ISRCs or MLC song codes into the writers, publishers, and ownership shares The MLC has on file, with an opt-in catalog-exposure report that flags unmatched or no-share tracks.",
    "version": "0.0",
    "x-build-id": "pv48hz8nckdVqnRt8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yungstentech~mlc-works-resolver/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yungstentech-mlc-works-resolver",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/yungstentech~mlc-works-resolver/runs": {
      "post": {
        "operationId": "runs-sync-yungstentech-mlc-works-resolver",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/yungstentech~mlc-works-resolver/run-sync": {
      "post": {
        "operationId": "run-sync-yungstentech-mlc-works-resolver",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "identifiers": {
            "title": "Identifiers (ISRCs or MLC song codes)",
            "type": "array",
            "description": "A list of ISRCs or MLC song codes to resolve. Each item is either a string (auto-detected as an ISRC or MLC song code) or an object like {\"isrc\": \"...\", \"title\": \"...\", \"artist\": \"...\"} where explicit keys bypass detection and title/artist feed the optional fuzzy fallback. ISWC is an OUTPUT field only: the MLC public API has no ISWC lookup path, so ISWC inputs return a free \"unsupported\" row."
          },
          "csvUrl": {
            "title": "CSV URL (alternative to the list above)",
            "type": "string",
            "description": "An https:// URL to a CSV. The identifier column is the first header matching isrc / songCode / identifier / id (case-insensitive), otherwise column 1. Optional title and artist columns feed the fuzzy fallback. A file with a single identifier per line and no header also works."
          },
          "includeExposureReport": {
            "title": "Include catalog-exposure report",
            "type": "boolean",
            "description": "When true, produce one summary REPORT flagging the tracks worth investigating (not-found and no-shares-on-file). Fires the premium catalog-exposure-report charge once, only when the full list was processed and the budget can carry it.",
            "default": false
          },
          "enableFuzzyFallback": {
            "title": "Enable fuzzy title/artist fallback",
            "type": "boolean",
            "description": "For not-found ISRCs that also carry title (and optionally artist) metadata, attempt a best-effort title/artist search (hard cap of 2 extra MLC calls per item). Matches are flagged with matchMethod \"fuzzy-title\".",
            "default": false
          },
          "includeRawWork": {
            "title": "Include raw MLC work JSON",
            "type": "boolean",
            "description": "Attach the raw MLC work object under rawWork on each resolved row (useful for agents that want every field).",
            "default": false
          },
          "pacingMs": {
            "title": "Pacing between MLC calls (ms)",
            "minimum": 1500,
            "maximum": 15000,
            "type": "integer",
            "description": "Delay between MLC API calls to respect the shared paid seat. Clamped to 1500-15000 ms in code. Default 6000 ms means roughly 12.5 s per ISRC, so 100 ISRCs takes about 21 minutes. Values below the default raise the chance of upstream rate limiting; the actor backs off and slows itself when that happens.",
            "default": 6000
          },
          "maxItems": {
            "title": "Max identifiers to process",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Upper limit on how many (deduplicated) identifiers to process this run. This is a ceiling, not a promise the whole list finishes: a run also stops at its platform timeout. At the default 6000 ms pacing a single 1-hour run resolves roughly 200-280 ISRCs, so for larger lists raise the run timeout or split across runs. When the timeout is near, the run stops cleanly without charging for an unfinished lookup and leaves the rest unprocessed and uncharged (see OUTPUT.note). Overflow past this cap is reported in OUTPUT, never silently dropped.",
            "default": 500
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}